feat(codex): add security findings workflow - #321
Conversation
List ChatGPT Codex Cloud security findings and inspect a single finding's
detail sections, over the existing signed-in browser automation.
- list: scrape the SSR'd `li > button` rows in the main world and page
through with a deny-list-guarded Next-page click; aggregate + dedupe.
- detail: direct-URL nav to `/findings/{id}?sev=` (32-hex validated), then
read #summary/#validation/#evidence/#attack-path + github /blob/ evidence
links + the signed validation artifact.
Read-only by construction: the CDP Input domain is never wired, so the
mutating Radix actions (Create PR / Patch / Chat / Close / Adjust / feedback)
are unreachable; the only click path is exact-aria-label Prev/Next paging.
No repo/account/id is ever hardcoded.
Mirrors the project-sources runner for the Chrome lifecycle (manual-login or
cookie-synced temp profile, lease/lock, teardown). Pure parsers live in
src/codex/* with unit tests; browser/action code follows the existing
DOM-eval idiom.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Codex review: needs real behavior proof before merge. Reviewed July 31, 2026, 5:40 PM ET / 21:40 UTC. ClawSweeper reviewWhat this changesThe PR adds Oracle CLI commands to read authenticated ChatGPT Codex Cloud security findings and, with explicit confirmation, invoke actions from a finding’s detail panel. Merge readiness⛔ Blocked until stronger real behavior proof is added - 9 items remain Keep this PR open: the action-result check has a concrete P1 correctness defect, and the claimed live proof is neither inspectable nor for the current PR head. Priority: P2 Review scores
Verification
How this fits togetherOracle’s Codex browser integration launches an authenticated ChatGPT session, reads the Codex Cloud findings interface, and presents data or action results in the CLI. This PR adds a path from CLI flags through a browser-detail panel to read-only report extraction and confirmed security-finding actions. flowchart LR
CLI[Oracle CLI command] --> Runner[Authenticated browser runner]
Runner --> Finding[Selected Codex finding]
Finding --> Reader[Report and evidence reader]
Reader --> Output[Structured CLI output]
Runner --> Guard[Confirmation and repository guard]
Guard --> Action[Trusted detail-panel action]
Action --> Result[Verified action result]
Decision needed
Why: The implementation introduces a new authenticated capability that can create PRs and alter security-finding state; source review can verify mechanical safeguards but cannot choose the intended product and authorization boundary. Before merge
Findings
Agent review detailsSecurityNeeds attention: The authenticated action boundary is fail-closed for input availability and confirmation, but Create PR outcome verification is not bound to the selected security finding. Review metrics
Merge-risk optionsMaintainer options:
Technical reviewBest possible solution: Keep read-only discovery intact, but merge confirmed actions only after the Create PR result is tied to a newly observed link in the selected finding panel, covered by regression tests, and demonstrated with redacted exact-head live evidence. Do we have a high-confidence way to reproduce the issue? Yes, from source: any pre-existing unrelated GitHub pull-request link in the document satisfies the current Create PR success condition because it is read globally and not compared with the pre-action value. Is this the best way to solve the issue? No: the current result check is not the safest solution because it trusts an arbitrary document-wide pull-request link; it should observe a new link scoped to the selected finding’s action panel. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 68b8c51b0ee0. LabelsLabel justifications:
EvidenceSecurity concerns:
Acceptance criteria:
What I checked:
Likely related people:
Rating scale
Overall follows the weaker of proof and patch quality. Workflow
HistoryReview history (13 earlier review cycles; latest 8 shown)
|
Motivation
Oracle previously had no Codex Cloud security-findings workflow. This PR adds the complete path from discovery to action: it can enumerate findings, open a selected finding, extract the report and evidence needed to understand it, and then invoke the finding’s supported detail-panel actions from the CLI.
The first part is deliberately read-only. It turns the authenticated findings surface into structured CLI output instead of forcing an operator to navigate the web UI, while preserving the report sections and evidence links that explain why a finding exists. The second part adds the operational step that was missing before: an explicit finding action command that can create a PR, start a finding chat, close or adjust a finding, and copy the available patch or report material.
Design
Discovery and report extraction
oracle codex findingsenumerates the paginated findings surface, reports severity and repository metadata, supports severity/limit filtering, and can emit JSON.oracle codex findings --finding <selection-id>opens one finding and extracts its title, repository/commit reference, Summary, Validation, Evidence, and Attack-path analysis sections.Explicit finding actions
oracle codex finding --finding <selection-id> --action <action>provides the action layer forcreate-pr,chat,close,adjust,copy-content,copy-link,copy-patch, andcopy-git-apply.element.click()calls.--text, while mutating actions require--confirm; read-only copy actions do not require confirmation.View PRbefore clicking Create PR, so rerunning the command returns an existing PR instead of creating a duplicate.--repo, and the finding detail is re-read immediately before the action is dispatched.Compatibility and safety
The original
oracle codex findingscommand remains read-only, and adding the action command does not make list or detail inspection mutating. The runner refuses mutating actions without explicit confirmation and refuses to proceed when trusted browser input is unavailable, so a failed automation primitive cannot be reported as a successful action.Validation
pnpm exec tsc --noEmitpnpm exec vitest run tests/codex/findings.test.ts— 16 passedpnpm run format:checkpnpm run lintpnpm run buildpnpm test— 1,572 passed, 44 skippedExact-head live proof
Current head:
1b7d6c7cfe42dc2668ccfde8c7f6c57b51b1cbc7