SpyBara
Go Premium

Documentation 2026-06-22 19:03 UTC to 2026-06-25 20:59 UTC

5 files changed +68 −121. View all changes and history on the product overview
2026
Sat 27 00:02 Thu 25 20:59 Mon 22 19:03 Sat 20 03:58 Fri 19 23:57 Thu 18 23:01 Wed 17 17:02 Tue 16 20:00 Mon 15 19:59 Sun 14 16:58 Sat 13 00:58 Fri 12 18:02 Thu 11 20:02 Wed 10 20:00 Tue 9 18:50 Sat 6 00:58 Fri 5 18:45 Thu 4 01:09 Wed 3 19:27 Tue 2 19:22
Details

39 - uses: actions/checkout@v539 - uses: actions/checkout@v5

40 with:40 with:

41 ref: refs/pull/${{ github.event.pull_request.number }}/merge41 ref: refs/pull/${{ github.event.pull_request.number }}/merge

42 fetch-depth: 0

42 persist-credentials: false43 persist-credentials: false

43 44 

44 - name: Pre-fetch base and head refs

45 env:

46 PR_BASE_REF: ${{ github.event.pull_request.base.ref }}

47 PR_NUMBER: ${{ github.event.pull_request.number }}

48 run: |

49 git fetch --no-tags origin \

50 "$PR_BASE_REF" \

51 "+refs/pull/$PR_NUMBER/head"

52 

53 - name: Run Codex45 - name: Run Codex

54 id: run_codex46 id: run_codex

55 uses: openai/codex-action@v147 uses: openai/codex-action@v1

Details

56 56 

57Start in the Codex App on the host you want to connect. The setup flow enables57Start in the Codex App on the host you want to connect. The setup flow enables

58remote access for that host, then shows a QR code you can scan from your phone.58remote access for that host, then shows a QR code you can scan from your phone.

59The QR code pairs that phone with that host. Pair every phone or supported Codex

60App device with every host you want it to control.

61 

62Existing connections used since June 8, 2026, remain paired. If you haven't

63 used an existing connection since June 8, 2026, update both apps and pair the

64 devices again.

59 65 

60<WorkflowSteps variant="headings">66<WorkflowSteps variant="headings">

61 67 


279 285 

280Confirm that the Codex App is running on the host, you've enabled **Allow other286Confirm that the Codex App is running on the host, you've enabled **Allow other

281devices to connect**, and both devices use the same ChatGPT account and287devices to connect**, and both devices use the same ChatGPT account and

282workspace.288workspace. If you haven't used the connection since June 8, 2026, update both

289apps and pair the devices again.

290 

291### Remote Control is off after you sign back in

292 

293Signing out of ChatGPT turns off **Remote Control**, but it doesn't remove your

294existing device pairings. After you sign back in, turn on **Remote Control** to

295restore the previous connection state.

296 

297If you see an error after you turn on **Remote Control** and select **Add**,

298restart the Codex App on the host, then try again.

283 299 

284### The approval request doesn't appear300### The approval request doesn't appear

285 301 

Details

52 52 

53## Automate reviews in CI/CD53## Automate reviews in CI/CD

54 54 

55You can run a change review from any CI/CD system that can check out the target55Run the same `$codex-security:security-diff-scan` skill from CI when the runner

56revisions and invoke the Codex CLI without interaction. Resolve the exact base56can invoke the Codex CLI without interaction. The runner must already have

57and head revisions, use a read-only sandbox, save the Markdown result, and57Codex Security installed in the `CODEX_HOME` used by `codex exec`. A fresh

58publish it through your CI/CD system.58runner doesn't have marketplace plugins installed by default, and

59 59`openai/codex-action` doesn't install the plugin.

60### GitHub Actions example60 

61 61Before running the scan:

62The following GitHub Actions workflow is one implementation of this pattern. It62 

63uses `openai/codex-action` to install the Codex CLI and run `codex exec` with a631. Provision Codex Security in the runner's `CODEX_HOME`.

64read-only sandbox. It produces a Markdown review for every in-scope pull642. Check out the exact base and head revisions with their Git history.

65request.653. Set the runner's platform temporary directory, such as `TMPDIR`, to a

66 66 writable artifact location. The diff-scan workflow reviews the checkout

67Before you add the workflow:67 without changing it, but it writes its sealed scan bundle and final report

68 68 outside the repository.

691. Create an `OPENAI_API_KEY` repository or organization secret.694. Start with advisory results. Review scan quality and runtime before making

702. Save the workflow as `.github/workflows/codex-security-review.yml`.70 the job a required check.

713. Start with advisory comments. Tune the prompt and review the results before71 

72 making the workflow a required check.72Then invoke the plugin explicitly:

73 73 

74```yaml74```bash

75name: Codex Security pull request review75export CODEX_HOME=/path/to/provisioned-codex-home

76 76export TMPDIR=/path/to/writable/temp

77on:77 

78 pull_request:78codex exec \

79 types: [opened, synchronize, reopened]79 --sandbox workspace-write \

80 80 --output-last-message "$TMPDIR/codex-security-review.md" \

81jobs:81 'Use $codex-security:security-diff-scan to review changes from <base-revision> to <head-revision> for security regressions. Do not modify the checkout. Return the final report path, findings summary, reviewed surfaces, deferred coverage, and open questions.'

82 security_review:

83 if: github.event.pull_request.head.repo.full_name == github.repository

84 runs-on: ubuntu-latest

85 permissions:

86 contents: read

87 outputs:

88 final_message: ${{ steps.run_codex.outputs.final-message }}

89 

90 steps:

91 - uses: actions/checkout@v5

92 with:

93 ref: refs/pull/${{ github.event.pull_request.number }}/merge

94 fetch-depth: 0

95 persist-credentials: false

96 

97 - name: Fetch pull request refs

98 env:

99 PR_BASE_REF: ${{ github.event.pull_request.base.ref }}

100 PR_NUMBER: ${{ github.event.pull_request.number }}

101 run: |

102 git fetch --no-tags origin \

103 "$PR_BASE_REF" \

104 "+refs/pull/$PR_NUMBER/head"

105 

106 - name: Run Codex Security review

107 id: run_codex

108 uses: openai/codex-action@v1

109 with:

110 openai-api-key: ${{ secrets.OPENAI_API_KEY }}

111 sandbox: read-only

112 output-file: codex-security-review.md

113 prompt: |

114 Review the pull request changes from

115 ${{ github.event.pull_request.base.sha }} to

116 ${{ github.event.pull_request.head.sha }} for security regressions.

117 

118 Focus on authentication, authorization, input handling, filesystem

119 access, network requests, secrets, and changes to shared security

120 controls. Return a concise Markdown review with affected paths and

121 lines, evidence, impact, and remediation guidance. If there are no

122 findings, summarize the security-sensitive surfaces reviewed and

123 any coverage gaps.

124 

125 - name: Upload the review

126 uses: actions/upload-artifact@v4

127 with:

128 name: codex-security-review

129 path: codex-security-review.md

130 

131 post_review:

132 needs: security_review

133 if: needs.security_review.outputs.final_message != ''

134 runs-on: ubuntu-latest

135 permissions:

136 issues: write

137 pull-requests: write

138 

139 steps:

140 - name: Post the review

141 uses: actions/github-script@v7

142 env:

143 CODEX_FINAL_MESSAGE: ${{ needs.security_review.outputs.final_message }}

144 with:

145 github-token: ${{ github.token }}

146 script: |

147 await github.rest.issues.createComment({

148 owner: context.repo.owner,

149 repo: context.repo.repo,

150 issue_number: context.payload.pull_request.number,

151 body: process.env.CODEX_FINAL_MESSAGE,

152 });

153```82```

154 83 

155This workflow checks out the pull request merge commit and fetches the base and84Archive the generated scan bundle and final report, then publish the Markdown

156head refs so Codex can resolve the exact change. The security review job has85summary through your CI/CD system. If you use `openai/codex-action`, point its

157read-only repository permissions. A separate job receives permission to post86`codex-home` input at the same provisioned directory and pass the skill prompt

158the final Markdown review, but it never receives the OpenAI API key.87above. The action can install and run the Codex CLI, but plugin provisioning is

88a separate prerequisite.

159 89 

160For action inputs, privilege controls, and troubleshooting, see the [Codex90For API-key handling, sandbox controls, fork protections, and a GitHub Actions

161GitHub Action guide](https://developers.openai.com/codex/github-action).91workflow, see the [Codex GitHub Action guide](https://developers.openai.com/codex/github-action).

Details

70Use the Codex CLI when you already have a finding from a scan, ticket, advisory,70Use the Codex CLI when you already have a finding from a scan, ticket, advisory,

71disclosure, security assessment, or internal review:71disclosure, security assessment, or internal review:

72 72 

73The commands below assume Codex Security is already installed in the

74`CODEX_HOME` used by `codex exec`. A fresh CI runner doesn't have marketplace

75plugins installed by default.

76 

73```text77```text

74Use $codex-security:fix-finding to fix finding <finding-id> from <report-path>. Validate the issue, make the smallest safe change, add focused regression coverage, and verify that the issue no longer reproduces.78Use $codex-security:fix-finding to fix finding <finding-id> from <report-path>. Validate the issue, make the smallest safe change, add focused regression coverage, and verify that the issue no longer reproduces.

75```79```


79repository for missing technical details, but it should ask before guessing a83repository for missing technical details, but it should ask before guessing a

80product policy or intended security invariant.84product policy or intended security invariant.

81 85 

82For an automated run, pass the prompt to `codex exec` after checking out the code86For an automated run, pass the prompt to `codex exec` after checking out the

83and making the finding report available:87code, making the finding report available, and provisioning the plugin in that

88`CODEX_HOME`:

84 89 

85```bash90```bash

86codex exec 'Use $codex-security:fix-finding to fix finding <finding-id> from <report-path>. Validate the issue, make the smallest safe change, add focused regression coverage, and verify that the issue no longer reproduces.'91codex exec 'Use $codex-security:fix-finding to fix finding <finding-id> from <report-path>. Validate the issue, make the smallest safe change, add focused regression coverage, and verify that the issue no longer reproduces.'


88 93 

89## Scan and fix findings in CI/CD94## Scan and fix findings in CI/CD

90 95 

96Provision Codex Security in the runner's `CODEX_HOME` before invoking these

97skills. The command below uses the installed plugin; it doesn't install the

98plugin itself.

99 

91In CI/CD, use one Codex run to scan the diff and generate fixes for every100In CI/CD, use one Codex run to scan the diff and generate fixes for every

92finding it discovers. The job doesn't need finding IDs or report paths as101finding it discovers. The job doesn't need finding IDs or report paths as

93inputs. Codex carries the findings from the scan into remediation within the102inputs. Codex carries the findings from the scan into remediation within the

Details

110| `not_actionable` | Repository evidence rules out the claim, such as by showing an unaffected version, unreachable path, effective guard, or non-shipped surface. |110| `not_actionable` | Repository evidence rules out the claim, such as by showing an unaffected version, unreachable path, effective guard, or non-shipped surface. |

111| `needs_review` | Repository evidence isn't enough to decide because required information is missing, ambiguous, runtime-dependent, environment-dependent, or policy-dependent. |111| `needs_review` | Repository evidence isn't enough to decide because required information is missing, ambiguous, runtime-dependent, environment-dependent, or policy-dependent. |

112 112 

113Exploitability ranks use `P0`, `P1`, `P2`, and so on, independently within113Exploitability ranks use positive integers starting at `1`, independently

114 each verdict queue. This keeps remediation priorities separate from unresolved114 within each verdict queue. This keeps remediation priorities separate from

115 review work. `P0` is the most exploitable `confirmed` finding or the115 unresolved review work. Rank `1` is the most exploitable `confirmed` finding

116 highest-priority `needs_review` finding in that result set. The rank isn't a116 or the highest-priority `needs_review` finding in that result set. The rank

117 scanner severity score, and `not_actionable` findings aren't ranked.117 isn't a scanner severity score, and `not_actionable` findings aren't ranked.

118 118 

119For each finding, review:119For each finding, review:

120 120