Skip to content

Preserve Deep Scan progress and report policy refusals clearly #276

Open

Description

@pablog12

Summary

A Deep Scan passed capability preflight and ran repeated discovery before a cybersecurity-policy refusal terminated the coordinator. The reported scan had no successful discovery manifestPath, no canonical report, and no supported in-place resume path.

This issue covers Deep Scan refusal handling, retained work, and recovery. Passing a capability or advisory access check cannot guarantee that a later request will not be refused.

Original environment and sequence

  • Codex Security plugin 0.1.15 (later updated locally to 0.1.16)
  • Workflow deep-scan-mcp/v1, coordinator manifest schema 1
  • Codex desktop 26.727.51351, Codex CLI 0.146.0
  • macOS 26.5.2, model gpt-5.6-sol / xhigh
  1. Launch a whole-repository Deep Scan from Codex desktop for an authorized local target.
  2. Pass capability preflight and allow discovery to proceed.
  3. Observe the coordinator move the scan to terminal failed during discovery with:
This content was flagged for possible cybersecurity risk. If this seems wrong, try rephrasing your request. To get authorized for security work, join the Trusted Access for Cyber program: https://chatgpt.com/cyber

The report does not establish that missing entitlement, rather than request-level classification, caused the refusal.

Remaining expectations

  • Surface available access information before work and distinguish an advisory/unknown result from a denial.
  • Identify whether a worker or the coordinator was refused and stop known-refused work without repeated automatic retries.
  • Preserve supported completed discovery/results and the refusal diagnostic.
  • Describe what is still usable and whether an explicit, supported resume can reuse accepted work.
  • Keep terminal execution status and unfinished scope accurate; retained partial results do not make a failed run successful.

Related work

Worker replacement and result-recovery improvements cover parts of the lifecycle, but do not establish resolution of this reported coordinator case. #1035 is an open proposal to stop promptly on known refusals. #56 covers the analogous Standard-scan report, and #25 covers pre-spend planning.

Activity

  1. added
    area:authLogin, credentials, account access, and authentication recovery.
    area:costToken usage, cost estimates, spending limits, and quota visibility.
    area:reportsHuman-readable reports, source excerpts, exports, and SARIF projections.
    bugSomething isn't working
    priority:p1High-impact scan failure, integrity gap, or user-blocking regression
    on Aug 15, 2026
  2. mldangelo-oai commented on Aug 15, 2026

    @mldangelo-oai
    Collaborator

    Thanks for the detailed report. #267 adds replacement for refused Deep Scan workers, and #434 can preserve completed partial results. Neither change guarantees an access check before work starts or recovery when the coordinator itself is refused. Keeping this open for that remaining behavior; #56 tracks the related Standard-scan case.

  3. added
    area:artifactsSaved scan state, storage, sealing, recovery, history, and artifact integrity.
    area:deep-scanDeep Scan coordination, worker scheduling, coverage, convergence, and resume.
    and removed
    area:costToken usage, cost estimates, spending limits, and quota visibility.
    area:reportsHuman-readable reports, source excerpts, exports, and SARIF projections.
    on Oct 8, 2026
  4. changed the title [-]Deep Security Scan fails terminally when its discovery triggers cyber safety[/-] [+]Preserve Deep Scan progress and report policy refusals clearly[/+] on Oct 19, 2026
  5. added
    status:needs-triageNeeds maintainer review, reproduction, or ownership
    and removed
    area:artifactsSaved scan state, storage, sealing, recovery, history, and artifact integrity.
    area:authLogin, credentials, account access, and authentication recovery.
    on Oct 19, 2026
  6. mldangelo-oai commented on Oct 19, 2026

    @mldangelo-oai
    Collaborator

    This stays P1. Using the full refusal text from this issue in a simulated worker run, I reproduced four attempts on the refused worker followed by a replacement. The shorter recognized refusal skips those retries but still starts a replacement.

    Saved-result recovery retained committed findings and a failed report in a separate check, so that part has improved. The remaining work is to stop promptly on known refusals while preserving accepted results and the original diagnostic; #1035 targets that behavior.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:deep-scanDeep Scan coordination, worker scheduling, coverage, convergence, and resume.bugSomething isn't workingpriority:p1High-impact scan failure, integrity gap, or user-blocking regressionstatus:needs-triageNeeds maintainer review, reproduction, or ownership

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions