main ruleset requires code-owner review. .github/CODEOWNERS assigns the
security reviewer (@vhpx) to the paths where a mistake has the widest blast
radius:
- CI, workflows and repository automation (
.github/,scripts/ci/) - authentication, sessions, SSO and request guards (
packages/auth,packages/sso,packages/turnstile,packages/supabase, the satellite session validator, web’s auth and SSO API routes, every app’sproxy.ts, and the API proxy guard and required-MFA runtime inpackages/utils) - the libraries those routes call to decide: web’s
lib/auth,lib/sso, MCP authorization and ChatGPT OAuth, the API-key middleware, the required-MFA policy modules, every realtime, Hive, Meet assistant and app-coordination token signer, Discord auth, and the service-credential check in web’s immediate notification route - scheduled jobs authenticated by the cron secret: every app’s
api/cronroutes, web’s legacy cron implementations, Infrastructure’s cron gateways andapps/cron-control - inbound webhooks and their verifiers (SePay and its OAuth state, Polar, Square, and the mail inbound verifiers)
- database migrations and RLS (
apps/database/supabase/migrations/) - code-execution infrastructure (
apps/devbox-control,packages/devbox) - payments (
packages/payment,packages/payment-core, and the payment API and webhooks inapps/pay) CODEOWNERSitself
oidc*, oauth, auth, *-auth,
*crypto*, webhooks, email-unsubscribe and external-apps* TypeScript
files, plus web’s and Infrastructure’s devbox libraries (runner authentication and token
revocation), the coordination Worker entry, storage export links, the workspace
membership helper and Calendar’s cron-authorised sync and schedule routes.
Code ownership is best-effort coverage, not an exhaustive security boundary: a
new sensitive module with an unusual name can still land unowned. The planned
enforced net is the Security review path classifier, which evaluates changed
paths on every pull request; until that workflow is merged and required, code
ownership and independent agent security review are the only checks.
Paths not listed have no code owner and follow the normal review rules. Importing an
owned package does not protect its callers, so list the calling routes and guards
themselves when they make security decisions.
Agent-authored pull requests
GitHub never counts an author’s own approval. Agent pull requests are currently opened with the security reviewer’s account, so a change to an owned path cannot collect a code-owner approval until agents author pull requests as thetuturuuu-bot GitHub App. Until then, such a pull request merges only through
an authorized administrator bypass after an independent agent security review,
and GitHub records that bypass. Once tuturuuu-bot authors agent pull requests,
the reviewer’s approval satisfies the rule normally.
Release pull requests
Release Please opens release pull requests againstproduction, where the same
ruleset applies. While the release author is the security reviewer’s account, a
release pull request that touches owned paths cannot collect a code-owner
approval, so release merges go through the release script or the recorded
administrator bypass.