Repository navigation
Separate the Codex advisory engine from the red team, and require session passkeys - #1265
Merged
Merged
Conversation
Migration 010 deletes the sessions minted before 009, which name no passkey, and makes dormouse_relay_sessions."credentialId" NOT NULL. mintSession, the one writer, already sets it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The audit checks every FAIL IF: Claude in CI is the release gate and Codex its advisory engine. The red team is the separate quarterly pass over the code and the published guarantees without the FAIL IF lines. security-audit.md splits the two into their own sections, and the script, workflow, builder, generator, and /security copy follow. AUDIT_OPEN_FINDINGS=<file> hands the local runner's domains the open findings from a file instead of listing them with gh, so the gh login a Codex sandbox reaches needs no read on them. A Codex canary without Claude's scorecard now prints its publish command with the either count left empty. The builder accepts it, the codex-recall record carries either: null, and the recall generator and graph read that as not computed: no point on the either line that week. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The test helpers that wrote sessions with no passkey now insert one, and the passkey-removal canary seed drops the NOT NULL from 010 along with the passkey from mintSession, so its tree still passes the hosted tests. S100's wording keeps the clause the seed names. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Deploying mouseterm with
|
| Latest commit: |
3ee47f8
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://070274d8.mouseterm.pages.dev |
| Branch Preview URL: | https://codex-engine-followups.mouseterm.pages.dev |
dormouse-bot
approved these changes
Oct 21, 2026
nedtwigg
had a problem deploying
to
hosted-preview
October 21, 2026 03:45 — with
GitHub Actions
Error
The audit (Claude, nightly and on every release) gates releases; the second-opinion audit (Codex, nightly) never does; the canary (weekly) measures both; the red team (quarterly, and before releases that change remote control or Hosted) runs on Claude through Anthropic's Cyber Verification Program and on Codex through OpenAI's Daybreak program. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
dormouse-bot
approved these changes
Oct 21, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
dormouse-bot
approved these changes
Oct 21, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Follow-ups to #1263 from the first local run of the Codex engine, plus one Hosted cleanup.
Vocabulary. The terms are now:
FAIL IFlines, on Claude through Anthropic's Cyber Verification Program and on Codex through OpenAI's Daybreak program.docs/specs/security-audit.mdnow has separate "Second-opinion audit" and "Red team" sections. S275 moves with its ID to "Second-opinion audit", and the cadence goes under "Red team". These follow the new names:security.md(the/securitycopy);security-ci.mdS45 pointer;ci-and-secretswork stream;The workflow's
run-nameis unchanged, since the generator selects runs by it.AUDIT_OPEN_FINDINGS=<file>inscripts/security-audit-local.sh: when set, the script copies that file toaudit-open-findings.txtinstead of listing the open findings withgh, so theghlogin a Codex sandbox reaches doesn't need access to them. A relative path resolves from where the script was run, and a missing file exits 64. It's documented in the script header and the spec.A Codex canary without Claude's scorecard.
canary --engine codex --key <run>now prints the publish command with Codex's own counts and nocanary_either. The builder accepts the empty input, thecodex-recallrecord carrieseither: null, and the generator and graph read null as "not computed": that week plots no point on the either line, and its description and run list say "not computed". A null is never counted as zero.Hosted migration 010 deletes the sessions from before 009 that name no passkey, and makes
dormouse_relay_sessions."credentialId"NOT NULL.mintSessionis the only writer, and both of its callers already pass the passkey. S100 gains "a session is stored naming no passkey",hosted.mddrops the note about older sessions living out their expiry, andsecurity-hosted.mdadds 010 to its list of files to inspect. Test helpers that wrote passkey-less sessions now insert a passkey first. The passkey-removal canary seed also drops the newNOT NULL, so its seeded tree still passes the hosted tests (checked).Touches
.github/(workflows/codex-audit-report.yamlcomments, an input description and step names;audit/ci-and-secrets.mdwork stream headings;audit/canaries/passkey-removal-keeps-sessions.patch).Test plan
pnpm test:checkspnpm test:audit: 183 pass. New tests coverAUDIT_OPEN_FINDINGS(file copied,ghnever called, missing file refused), the Codex canary publish command without a scorecard, and the builder publishing with no either count. Each one goes red with its fix reverted.websitepnpm test: typecheck + 460 vitest. New generator and graph tests cover a null either count, and each goes red with its fix reverted.hostedpnpm test(Docker) andpnpm typecheck. A new migration test applies 001–009, writes a session with a passkey and one without, applies 010, and checks that only the first survives and that a new passkey-less session is refused. It goes red with either statement of 010 removed. One unrelated voice test timed out once and passed on rerun.passkey-removal-keeps-sessions: hosted relay, workers, relay-room, and migrations tests pass.🤖 Generated with Claude Code