2 2
3> For the complete documentation index, see [llms.txt](https://learn.chatgpt.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to the page URL.3> For the complete documentation index, see [llms.txt](https://learn.chatgpt.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to the page URL.
4 4
5Use a completed Codex Security scan for either of these handoffs:5Export findings from a completed scan to use them in another tool. To track
6 6remediation or coordinate disclosure, ask Codex to prepare an issue or a
7- **Export** creates a portable JSON, CSV, or SARIF file.7private draft GitHub Security Advisory.
8- **Track findings** prepares selected findings as Linear, GitHub, or Jira
9 issues, or as one private draft GitHub Security Advisory. Codex checks for
10 duplicates and waits for your approval before writing.
11
12Neither workflow changes the sealed scan bundle.
13
14Available artifact links and export formats depend on your Codex surface and
15 installed plugin version. Check the [plugin
16 changelog](https://learn.chatgpt.com/docs/security/plugin/changelog) before you use a format in
17 automation.
18 8
19## Export a portable artifact9## Export a portable artifact
20 10
21In the desktop app, open a completed scan from **Security** > **Scans**. Use its11In the desktop app, open a completed scan from **Security** > **Scans**. Under
22available artifact links to inspect `report.md`, `findings.json`,12**Artifacts**, select **Findings JSON** to open the structured findings or
23`scan-manifest.json`, `coverage.json`, or a SARIF report when present.13**SARIF report** if the scan produced one. Available artifacts depend on the
24 14app and plugin version.
25To create another supported format, ask Codex to export findings from the
26completed scan without modifying its sealed bundle:
27
28```text
29Export the findings from [completed scan directory] as [JSON, CSV, or SARIF]. Do not modify the sealed scan bundle or upload its contents.
30```
31 15
32Choose the format that fits your destination:16When Codex offers to export the scan's findings, ask for JSON, CSV, or SARIF.
17To export from a terminal, use the saved scan directory with the
18[CLI export command](https://learn.chatgpt.com/docs/security/cli/reference#codex-security-export).
33 19
34| Format | Use it for |20| Format | Use it for |
35| ------ | ----------------------------------------------------------------- |21| ------ | ----------------------------------------------------------------- |
36| JSON | Preserve the sealed structured findings for tools and scripts. |22| JSON | Preserve the sealed structured findings for tools and scripts. |
37| CSV | Review findings and current local triage state in a spreadsheet. |23| CSV | Review findings in a spreadsheet. |
38| SARIF | Send findings to tools that support the SARIF interchange format. |24| SARIF | Send findings to tools that support the SARIF interchange format. |
39 25
26To include your latest triage status, close reasons, or notes, export a CSV
27from the plugin after making those changes. Open `exports/findings.csv` in
28the scan directory. The CLI exports the saved scan without local triage updates.
29
40<figure className="not-prose my-8">30<figure className="not-prose my-8">
41 <CodexScreenshot31 <CodexScreenshot
42 alt="Completed Codex Security scan showing the real coverage, findings, manifest, Markdown, and SARIF artifacts"32 alt="Completed Codex Security scan showing the real coverage, findings, manifest, Markdown, and SARIF artifacts"
50 </figcaption>40 </figcaption>
51</figure>41</figure>
52 42
53Select **Markdown report** to open `report.md` in your configured external43Select **Markdown report** to open `report.md` in your configured editor.
54editor. The editor depends on your system settings; the example below shows the
55generated report contents.
56 44
57<figure className="not-prose my-8">45<figure className="not-prose my-8">
58 <CodexScreenshot46 <CodexScreenshot
67 </figcaption>55 </figcaption>
68</figure>56</figure>
69 57
70Use the returned artifact path. If another tool needs the complete scan58Keep the whole scan directory when you archive the report. Tracking requires
71context, keep the original `scan-manifest.json`, `findings.json`, and59the original `scan-manifest.json` and `findings.json`. If you need to edit
72`coverage.json` together. Exporting doesn't upload findings to a code-scanning60the findings, make your own copy of `findings.json` first.
73service.
74 61
75## Track selected findings62## Track selected findings
76 63
77Run `$codex-security:track-findings` with one validated finding or an64Use `$codex-security:track-findings` with one or more validated findings from
78selected batch of up to 25 findings from the same sealed scan. Each65the same completed scan. Choose one destination for each run.
79run uses one provider and one destination. A private draft GitHub Security
80Advisory accepts only one finding.
81
82To prepare a Linear issue, send:
83
84```text
85Use $codex-security:track-findings to prepare finding [finding ID] from
86[completed scan directory] for the Linear team [team] and project [project, if
87any]. Check for duplicates and show me the exact issue title, body, metadata,
88and destination. Do not create or update anything until I approve that payload.
89```
90
91To prepare a GitHub issue, send:
92
93```text
94Use $codex-security:track-findings to prepare finding [finding ID] from
95[completed scan directory] for GitHub repository [owner/repository]. Check open
96and closed issues for duplicates and show me the exact issue title, body,
97metadata, repository visibility, and authenticated transport. Do not create or
98update anything until I approve that payload.
99```
100 66
101To prepare a Jira issue, send:67| Destination | What to specify |
68| -------------------------------------- | ---------------------------------------------------------- |
69| Linear issue | Team and optional project |
70| GitHub issue | Owner and repository |
71| Jira issue | Site, project, and issue type in the Atlassian app |
72| Private draft GitHub Security Advisory | One finding and its public source repository on GitHub.com |
102 73
103```text74```text
104Use $codex-security:track-findings to prepare finding [finding ID] from75Use $codex-security:track-findings to draft a Linear issue for team [team]
105[completed scan directory] for Jira project [project key] as [issue type].76about finding [finding ID] in [completed scan directory].
106Check for duplicates and show me the exact issue summary, description,
107metadata, and destination. Do not create or update anything until I approve
108that payload.
109```77```
110 78
111Jira tracking requires the Atlassian Rovo plugin in Codex. Reusing an issue79For a batch, list the finding IDs in your request. To track findings in Jira,
112requires read access; creating or updating one requires read and write access.80connect the Atlassian app in Codex. Confirm who can read issues in the
81project. Creating an issue requires browse and create permissions. You need
82read access to reuse an existing issue and both read and edit access to update it.
113 83
114To prepare a private draft GitHub Security Advisory, send:84For a draft advisory, sign in to GitHub.com with GitHub CLI (`gh`) using an
85 account with administrator access to the public, non-fork source repository.
86 Select one finding from a scan whose target is a Git revision
87 (`git_revision`). Commit-diff scans don't qualify. Have the package name,
88 ecosystem, and affected versions ready.
115 89
116```text90<a id="review-the-proposed-write"></a>
117Use $codex-security:track-findings to prepare finding [finding ID] from
118[completed scan directory] as a private draft GitHub Security Advisory in
119[owner/repository]. Verify the sealed source revision, repository, affected
120paths, package metadata, and duplicate state. Show me the exact advisory
121payload, authenticated GitHub CLI identity, and disclosure warnings. Do not
122create anything until I approve that payload.
123```
124 91
125Draft advisories require one finding from a sealed `git_revision` scan, the92## Review the issue or advisory
126 verified public canonical source repository, and administrator access. The
127 workflow doesn't batch, update, publish, or close advisories. Use a private
128 issue destination when the source doesn't meet those requirements.
129
130## Review the proposed write
131 93
132<WorkflowSteps>94<WorkflowSteps>
133 95
1341. Confirm the finding ID and fingerprint came from the intended sealed scan.961. Check the source scan, selected findings, and signed-in account. Confirm
1352. Confirm the provider, exact Linear team, GitHub repository, Jira project, or97 the destination and who can read it. Use a private destination for sensitive
136 advisory repository, and the live destination visibility.98 findings. An internal or public GitHub issue requires explicit disclosure
1373. Review the duplicate outcome: `create`, `reuse`, `update`, or `blocked`.99 approval.
1384. Read the complete proposed title, body, source locations, and provider1002. Check whether Codex proposes to create, reuse, or update an issue.
139 metadata. Remove exploit detail or internal evidence that the destination101 For advisories, it can create a private draft or reuse a matching draft or
140 shouldn't expose.102 published advisory.
1415. Approve only that exact payload. A changed destination, visibility, finding1033. Read the title, body, and source locations. A draft advisory may become public.
142 set, or body requires a new preview.104 Remove credentials, private evidence, and unnecessary exploit details.
1054. Approve the preview in the Codex conversation before Codex creates or
106 updates an item. If the preview changes, review and approve it again.
143 107
144</WorkflowSteps>108</WorkflowSteps>
145 109
146Sensitive findings should go to a private destination. Creating an issue in an110<a id="verify-the-tracked-item"></a>
147internal or public GitHub repository requires an explicit visibility warning
148and approval of the complete content. Treat a draft advisory description as
149eventually public and remove credentials, private evidence, and unnecessary
150exploit details before approval.
151
152Review and approve external actions in the Codex conversation. Approval
153doesn't create a separate issue or advisory screen in the Security workbench.
154 111
155## Verify the tracked item112Save the issue ID or link the tracker returns, even if Codex can't reopen the
113issue. For a new advisory, Codex checks that the draft matches what you
114approved.
156 115
157After you approve the proposed write, Codex rechecks the sealed source,116If Codex can't tell whether it created or updated an item, it stops the batch.
158destination, access, and duplicate state. For a batch, it processes findings117Before retrying, check the tracker for the issue or advisory and ask Codex
159one at a time and stops at the first uncertain result. Creation, update, or118which findings it hasn't tried yet.
160reuse is complete only after Codex reads the exact issue back and verifies its
161binding identifiers and content.
162 119
163Keep the returned canonical issue or advisory URL with your triage record.
164Continue with [Fix and verify a finding](https://learn.chatgpt.com/docs/security/plugin/fix-findings)120Continue with [Fix and verify a finding](https://learn.chatgpt.com/docs/security/plugin/fix-findings)
165when the owner accepts the item for remediation.121when the owner accepts the item for remediation.