Codex Security: adopt completed Deep Scan manifest without repeating discovery

Open 💬 0 comments Opened Jul 27, 2026 by isaiahratahi

What version of the Codex App are you using?

ChatGPT desktop app 26.721.41059 (build 5848), bundled codex-cli 0.146.0-alpha.3.1.

Codex Security plugin: 0.1.13.

What platform is your computer?

macOS 26.5.2 (25F84), arm64.

What issue are you seeing?

An app-backed Deep Security Scan has complete, internally consistent discovery artifacts and a terminal owner-capped discovery manifest, but it cannot be finalized because the native Deep Scan orchestration receipt was never persisted.

The completed discovery evidence is substantial:

  • immutable Git revision
  • seven complete discovery rounds
  • 42 completed workers
  • 6,300 review receipts
  • 69 canonical candidates
  • terminal reason capped
  • cap type owner
  • strict saturation explicitly false
  • discovery-manifest SHA-256 bd47682e1278d93c0afaf8784e57029308270671758932cbb9aa26f8b0d69cba

Centralized validation, attack-path analysis, detailed finding write-ups, hardening output, and the canonical scan-manifest.json, findings.json, and coverage.json were subsequently completed. A finalization run against an isolated copy validates and seals the complete bundle successfully.

However, app-backed completion returns:

Codex Security scan completion failed.
Deep Scan discovery orchestration must finish and persist its manifest before the parent scan can be completed.

The public MCP surface has no operation that can validate and adopt an existing terminal discovery manifest. Calling start_codex_security_deep_scan at this point initializes native orchestration from setup and would repeat already completed discovery, consuming substantial additional usage.

The scan has therefore been left running. The plugin database was not edited and discovery was not repeated.

How can the issue be reproduced?

  1. Create an app-backed scan in Deep mode.
  2. Complete repeated discovery and write a terminal discovery manifest through a parent/legacy continuation that does not establish native deep_scan_runs worker and reducer state.
  3. Complete centralized validation, attack-path analysis, write-ups, hardening, and canonical JSON assembly.
  4. Call complete_codex_security_scan.
  5. Completion rejects the otherwise valid bundle because the native orchestration receipt is absent.

What is the expected behavior?

Please add a supported, idempotent recovery/adoption operation that can:

  1. Validate an existing terminal Deep Scan discovery manifest against the app-backed scan ID, immutable target revision or snapshot digest, configured scope, worker receipts, canonical candidate ledgers, coverage/work ledgers, and artifact digests.
  2. Accept an explicit owner-capped terminal state without claiming saturation.
  3. Persist the equivalent native terminal orchestration receipt only after those checks pass.
  4. Allow ordinary parent completion to seal and index the already-completed downstream artifacts.
  5. Refuse adoption when the target, manifest, artifact digests, or candidate/coverage inventories do not match.

This would provide a lossless recovery path without silently trusting arbitrary files or repeating expensive completed discovery.

Additional information

The official plugin documentation describes resuming interrupted scans, but the currently installed tool surface does not expose manifest adoption for this state mismatch. A private scan/session identifier can be supplied through an appropriate non-public support channel if required.

View original on GitHub ↗