SECURITY ARCHITECTURE & INVARIANTS

Security Built on Verifiable Boundaries

MY OWL is engineered for security-conscious development teams. We document our actual security controls, write contracts, and architectural invariants truthfully.

LEAST PRIVILEGE

GitHub App Authentication & Scopes

MY OWL connects via an official GitHub App rather than personal access tokens. Scopes are strictly restricted to read repository contents/metadata and write pull requests exclusively to isolated migration branches.

Repository Contents: Read-only access for ephemeral AST symbol parsing
Pull Requests: Write access exclusively for opening Draft PRs
Zero default branch (main/master) write permissions
Revocable instantly through GitHub Organization Settings
TAMPER RESISTANT

Installation State Binding & Webhook HMAC

Installation flows generate single-use, cryptographically signed state tokens with 15-minute expiration to prevent cross-site request forgery and installation hijacking.

HMAC-SHA256 state signature bound to user and workspace ID
Incoming GitHub webhook signature verification (X-Hub-Signature-256)
Replay attack prevention via unique webhook delivery IDs
Zero exposure of GitHub App private keys to the client
DRAFT-ONLY BOUNDARY

Controlled Write Safety Contract

Every proposed modification is validated by a strict ControlledWriteRequest contract in core before any Git operation is executed. Direct commits to default branches are programmatically impossible.

Mandatory branch naming enforcement (apiproof/* or myowl/* prefix)
Forbidden path protection: blocks touching CI workflows or dotfiles
Strict single-use idempotency keys prevent duplicate PR creation
Opened strictly with draft: true requiring developer review
STATE GUARANTEE

Baseline Integrity & Divergence Protection

Scans record the exact 40-character Git commit SHA of the target branch. If your default branch HEAD moves before a proposal is created, the system refuses to push.

Immutable baseline commit SHA pinned during AST analysis
Pre-write HEAD divergence verification against live GitHub repository
Fails closed with REPOSITORY_HEAD_DIVERGED if remote has moved
Cryptographically signed verification evidence bound to baseline SHA

OPERATIONAL INVARIANTS

Security Invariant Matrix

Strict execution boundaries enforced by our GitHub App write contracts and platform architecture.

Operation / CapabilityEnforcementStatusImplementation Detail
Source Code InspectionRead-only AST traversalImplementedCode is read into memory buffers, parsed into AST nodes by ts-morph, and analyzed for symbol reachability.
Default Branch (main/master) CommitsStrictly forbiddenBlockedMY OWL has no permissions to write directly to default branches. Proposals must target isolated branches.
Auto-Merging Pull RequestsStrictly forbiddenBlockedNo auto-merge capability or permissions exist. Every proposal stops at a GitHub Draft PR for human review.
Branch Creation Scopeapiproof/* and myowl/* onlyEnforcedValidated against canonical branch naming policy. Custom or unapproved branch prefixes are rejected.
Patch Scope BoundaryAffected file lines onlyEnforcedRejects patches modifying files outside the target finding or touching workflow configuration files.
Pre-Proposal Verification4-gate compiler harnessEnforcedSyntax check, TypeScript compiler diagnostics, scope boundaries, and dry-run tests must pass before PR creation.
Data PersistenceMetadata, findings & plans onlyImplementedDatabase stores repository metadata, baseline SHAs, finding snippets, and verification reports.
Self-Hosted Runners / Private VPCExecution in customer perimeterPlannedArchitecture supports runner decoupling; dedicated self-hosted test execution is on the roadmap.
Enterprise SSO / SAMLCorporate identity integrationPlannedCurrently supports GitHub OAuth session auth; SAML/Okta integration is on the roadmap.
DATA HANDLING & SOURCE INTEGRITY

What We Store and What We Discard

We believe in radical transparency about data boundaries. We do not make vague marketing claims; here is exactly what our database holds.

WHAT IS STORED IN DATABASE
  • • Repository identity (GitHub ID, full name, default branch name)
  • • Baseline commit SHA (40-char hex string)
  • • Finding metadata: file path, line number, AST symbol, and minimal source snippet around the affected call site
  • • Deterministic MigrationPlan JSON & patch diff text
  • • Verification evidence digests & execution reports
  • • Audit logs of scan events and proposal creations
WHAT IS NEVER STORED
  • • Full repository source trees or unimpacted files
  • • Customer environment variables or .env secrets
  • • Customer database passwords or production API keys
  • • Private keys (stored in encrypted server environment only)
  • • We do not train machine learning models on customer code