SpyBara
Go Premium

Documentation 2026-08-06 23:58 UTC to 2026-08-07 18:59 UTC

4 files changed +313 −40. View all changes and history on the product overview
2026
Mon 31 19:59 Sat 29 07:02 Fri 28 23:02 Thu 27 21:01 Wed 26 23:58 Tue 25 19:59 Mon 24 22:00 Fri 21 19:59 Thu 20 23:59 Wed 19 22:57 Tue 18 13:01 Mon 17 23:58 Sat 15 01:01 Fri 14 22:00 Thu 13 22:59 Wed 12 19:59 Tue 11 22:59 Mon 10 22:00 Sat 8 03:02 Fri 7 18:59 Thu 6 23:58 Wed 5 19:00 Tue 4 22:00 Mon 3 23:00 Sun 2 21:00
Details

83 href: "/codex/enterprise/managed-configuration",83 href: "/codex/enterprise/managed-configuration",

84 icon: "dataControls",84 icon: "dataControls",

85 },85 },

86 {

87 title: "Prisma AIRS",

88 description:

89 "Apply workspace-wide security policies to Codex prompts.",

90 href: "/codex/enterprise/prisma-airs",

91 icon: "shieldCheck",

92 },

86 {93 {

87 title: "HIPAA configuration",94 title: "HIPAA configuration",

88 description:95 description:

enterprise/prisma-airs.md +104 −0 created

Details

1# Prisma AIRS

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.

4 

5Connect Palo Alto Networks Prisma AIRS to apply your security policies to

6Codex prompts before they reach the model. Workspace admins configure the

7integration once for their workspace.

8 

9Prisma AIRS can apply the protections configured in your security profile, such

10as data loss prevention, prompt injection detection, and malicious URL

11detection.

12 

13## Before you begin

14 

15You need:

16 

17- A ChatGPT workspace with Prisma AIRS access enabled. Contact your OpenAI

18 account team to request access.

19- Workspace administrator permissions.

20- A Prisma AIRS API key, a configured security profile, and the service endpoint

21 for your deployment.

22 

23## Connect Prisma AIRS

24 

251. Open [Codex Data controls](https://chatgpt.com/codex/cloud/settings/data) as

26 a workspace administrator.

272. Under **External guardrails**, find **Prisma AIRS**. If this section isn't

28 available, ask your OpenAI account team to enable access for your workspace.

293. Enter your **API key**, **Security profile** name or ID, and **Endpoint

30 URL**.

314. Choose an **Enforcement mode** and the behavior **On AIRS failure**.

325. Select **Save connection**. Codex validates the connection and encrypts your

33 API key.

346. Select **Test connection** to verify the saved configuration.

357. Turn on **Enable Prisma AIRS** to start scanning prompts across the

36 workspace.

37 

38Saving the connection doesn't enable scanning. You must also turn on **Enable

39Prisma AIRS**.

40 

41## Choose an endpoint

42 

43Use the approved endpoint for your Prisma AIRS deployment:

44 

45| Region | Endpoint |

46| ------------- | -------------------------------------------------------- |

47| United States | `https://service.api.aisecurity.paloaltonetworks.com` |

48| Germany | `https://service-de.api.aisecurity.paloaltonetworks.com` |

49| India | `https://service-in.api.aisecurity.paloaltonetworks.com` |

50| Singapore | `https://service-sg.api.aisecurity.paloaltonetworks.com` |

51 

52Codex uses the United States endpoint by default. Workspace data-residency

53requirements can restrict which endpoint you can use.

54 

55## Choose how to handle prompts

56 

57**Enforcement mode** determines what happens when Prisma AIRS flags a prompt:

58 

59- **Block**: Stop the prompt before it reaches the model. This is the default.

60- **Alert only**: Record the detection and allow the prompt to continue.

61 

62**On AIRS failure** determines what happens if Prisma AIRS is unavailable or

63doesn't respond:

64 

65- **Allow prompts**: Continue without a completed scan. This is the default.

66- **Block prompts**: Stop the prompt until Prisma AIRS can scan it.

67 

68Choose **Block prompts** when your security policy requires every covered prompt

69to receive a scan decision.

70 

71## Understand what gets scanned

72 

73Codex sends newly submitted prompt text to the configured Prisma AIRS endpoint

74for inspection. This applies to covered Codex workflows, including the app, CLI,

75IDE extension, and cloud, when users authenticate to the configured ChatGPT

76workspace. Sessions authenticated with a Platform API key aren't covered. See

77[Enforce a login method or workspace](https://learn.chatgpt.com/docs/auth#enforce-a-login-method-or-workspace)

78to require the intended sign-in method and workspace.

79 

80Prisma AIRS doesn't scan assistant responses, tool calls, tool results, files,

81or images through this integration. Your configured security profile determines

82which threats and sensitive data Prisma AIRS detects.

83 

84Codex encrypts your API key and never displays it after you save it. Review Palo

85Alto Networks' data-handling, retention, and residency policies before enabling

86prompt inspection. Those policies apply to prompts sent to Prisma AIRS.

87 

88## Manage the connection

89 

90Return to [Codex Data controls](https://chatgpt.com/codex/cloud/settings/data)

91to manage the integration:

92 

93- Select **Test connection** to verify your saved API key, security profile,

94 and endpoint.

95- Enter a new key and select **Rotate API key** to replace the saved key

96 without changing the other settings.

97- Turn off **Enable Prisma AIRS** to stop scanning while preserving the saved

98 configuration.

99- Select **Disconnect**, then confirm, to stop scanning and delete the saved

100 connection and API key.

101 

102For broader workspace setup and policy management, see the

103[Admin rollout guide](https://learn.chatgpt.com/docs/enterprise/admin-setup) and

104[Managed configuration](https://learn.chatgpt.com/docs/enterprise/managed-configuration).

security/cli/ci.md +179 −22

Details

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 

5Run the Codex Security CLI in CI to review the exact changes in a pull request,5Run the Codex Security CLI in CI to review the exact changes in a pull request

6keep findings and coverage, and optionally fail the check at a chosen6or merge request, keep findings and coverage, and optionally fail the check at

7severity. Start with advisory results, review scan quality and runtime, then7a chosen severity. Start with advisory results, review scan quality and

8add a severity policy that fits your repository.8runtime, then add a severity policy that fits your repository.

9 9 

10Install the public `@openai/codex-security` package. Running scans still10Install the public `@openai/codex-security` package. Running scans still

11 requires Codex Security access.11 requires Codex Security access.

12 12 

13This guide uses GitHub Actions. The same scan and export commands work in other13This guide includes examples for GitHub Actions and GitLab CI/CD. The same scan

14CI systems.14and export commands work in other CI systems.

15 15 

16## Prepare the workflow16## Prepare the workflow

17 17 

18Store an OpenAI API key as a repository or organization secret named18Store an OpenAI API key in your CI provider's secret store as

19`CODEX_SECURITY_API_KEY`.19`CODEX_SECURITY_API_KEY`.

20 20 

21Map this secret directly to the scan step's `OPENAI_API_KEY` environment21Map this secret directly to the scan step's `OPENAI_API_KEY` environment


28- Python 3.10 or later.28- Python 3.10 or later.

29- The published `@openai/codex-security` package, installed outside the29- The published `@openai/codex-security` package, installed outside the

30 repository checkout.30 repository checkout.

31- The pull-request head and base history so Git can calculate the merge base.31- The pull-request or merge-request head and base history so Git can calculate

32- [GitHub Code Security](https://docs.github.com/en/code-security/code-scanning/integrating-with-code-scanning/uploading-a-sarif-file-to-github)32 the merge base.

33 enabled for private or internal repositories when you upload SARIF.

34 33 

35## Add the GitHub Actions workflow34## Add the GitHub Actions workflow

36 35 

36For private or internal repositories, enable

37[GitHub Code Security](https://docs.github.com/en/code-security/code-scanning/integrating-with-code-scanning/uploading-a-sarif-file-to-github)

38before you upload SARIF.

39 

37Create `.github/workflows/codex-security.yml`. Before checking out the pull40Create `.github/workflows/codex-security.yml`. Before checking out the pull

38request, install `@openai/codex-security@0.1.3` under41request, install `@openai/codex-security` under

39`$RUNNER_TEMP/codex-security` so the trusted executable is available at42`$RUNNER_TEMP/codex-security` so the trusted executable is available at

40`$RUNNER_TEMP/codex-security/node_modules/.bin/codex-security`:43`$RUNNER_TEMP/codex-security/node_modules/.bin/codex-security`:

41 44 


72 --ignore-scripts \75 --ignore-scripts \

73 --no-audit \76 --no-audit \

74 --no-fund \77 --no-fund \

75 @openai/codex-security@0.1.378 @openai/codex-security

76 79 

77 - name: Verify Codex Security80 - name: Verify Codex Security

78 env:81 env:


163source snippets, evidence, and remediation details. Choose access controls and a166source snippets, evidence, and remediation details. Choose access controls and a

164short retention window appropriate for your repository.167short retention window appropriate for your repository.

165 168 

169## Add the GitLab CI/CD pipeline

170 

171GitLab can ingest

172[SARIF 2.1.0 reports](https://docs.gitlab.com/ci/yaml/artifacts_reports/#artifactsreportssarif)

173on GitLab Ultimate 19.2 or later. Add a masked and hidden

174`CODEX_SECURITY_API_KEY` CI/CD variable before you run the pipeline.

175 

176Add the `security` stage and Codex Security job to the root `.gitlab-ci.yml`.

177Keep any existing stages and jobs in the file. The example scans merge-request

178changes by default. Set `CODEX_SECURITY_FULL_SCAN_DEFAULT_BRANCH` to `"true"`

179to also scan the complete default branch:

180 

181```yaml

182variables:

183 CODEX_SECURITY_FULL_SCAN_DEFAULT_BRANCH: "false"

184 

185stages:

186 - test

187 - security

188 

189codex-security:

190 stage: security

191 image: node:26-bookworm-slim

192 rules:

193 - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_SOURCE_PROJECT_ID == $CI_PROJECT_ID'

194 variables:

195 CODEX_SECURITY_SCAN_SCOPE: "diff"

196 - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CODEX_SECURITY_FULL_SCAN_DEFAULT_BRANCH == "true"'

197 variables:

198 CODEX_SECURITY_SCAN_SCOPE: "full"

199 variables:

200 GIT_DEPTH: "0"

201 CODEX_SECURITY_CLI_DIR: "/tmp/codex-security-cli"

202 before_script:

203 - |

204 set -eu

205 apt-get update -qq

206 apt-get install -y -qq --no-install-recommends \

207 ca-certificates \

208 git \

209 python3 \

210 ripgrep

211 npm install \

212 --prefix "$CODEX_SECURITY_CLI_DIR" \

213 --ignore-scripts \

214 --no-audit \

215 --no-fund \

216 @openai/codex-security

217 export CODEX_SECURITY_BIN="$CODEX_SECURITY_CLI_DIR/node_modules/.bin/codex-security"

218 test -x "$CODEX_SECURITY_BIN"

219 "$CODEX_SECURITY_BIN" --version

220 script:

221 - |

222 set -eu

223 if test -z "${CODEX_SECURITY_API_KEY:-}"; then

224 echo "Set the CODEX_SECURITY_API_KEY CI/CD variable." >&2

225 exit 2

226 fi

227 

228 codex_security_api_key="$CODEX_SECURITY_API_KEY"

229 unset CODEX_SECURITY_API_KEY

230 

231 case "${CODEX_SECURITY_SCAN_SCOPE:-}" in

232 diff)

233 BASE_SHA="$CI_MERGE_REQUEST_DIFF_BASE_SHA"

234 HEAD_SHA="$CI_COMMIT_SHA"

235 BASE_REVISION="$(git merge-base "$BASE_SHA" "$HEAD_SHA")"

236 set -- --diff "$BASE_REVISION" --head "$HEAD_SHA"

237 echo "Scanning committed changes from $BASE_REVISION to $HEAD_SHA."

238 ;;

239 full)

240 set -- --mode standard

241 echo "Scanning the complete default branch at $CI_COMMIT_SHA."

242 ;;

243 *)

244 echo "Unsupported Codex Security scan scope: ${CODEX_SECURITY_SCAN_SCOPE:-unset}" >&2

245 exit 2

246 ;;

247 esac

248 

249 export CODEX_SECURITY_STATE_DIR="/tmp/codex-security-state-$CI_JOB_ID"

250 SCAN_DIR="/tmp/codex-security-results-$CI_JOB_ID"

251 JSON_FILE="/tmp/codex-security-$CI_JOB_ID.json"

252 SARIF_FILE="/tmp/codex-security-$CI_JOB_ID.sarif"

253 

254 install -d -m 700 "$CODEX_SECURITY_STATE_DIR" "$SCAN_DIR"

255 

256 set +e

257 OPENAI_API_KEY="$codex_security_api_key" \

258 "$CODEX_SECURITY_BIN" scan . \

259 "$@" \

260 --auth api-key \

261 --output-dir "$SCAN_DIR" \

262 --json > "$JSON_FILE"

263 scan_exit="$?"

264 set -e

265 unset codex_security_api_key

266 

267 install -d -m 700 codex-security-artifacts/results

268 cp -R "$SCAN_DIR"/. codex-security-artifacts/results/

269 if test -s "$JSON_FILE"; then

270 cp "$JSON_FILE" codex-security-artifacts/codex-security.json

271 fi

272 printf '%s\n' "$scan_exit" > codex-security-artifacts/scan-exit-code.txt

273 

274 export_exit=0

275 if test -f "$SCAN_DIR/scan-manifest.json"; then

276 set +e

277 "$CODEX_SECURITY_BIN" export "$SCAN_DIR" \

278 --export-format sarif \

279 --source-root "$CI_PROJECT_DIR" \

280 --output "$SARIF_FILE"

281 export_exit="$?"

282 set -e

283 if test -s "$SARIF_FILE"; then

284 cp "$SARIF_FILE" codex-security-artifacts/codex-security.sarif

285 fi

286 fi

287 

288 if test "$scan_exit" -ne 0; then

289 exit "$scan_exit"

290 fi

291 exit "$export_exit"

292 artifacts:

293 when: always

294 access: maintainer

295 expire_in: 7 days

296 paths:

297 - codex-security-artifacts/

298 reports:

299 sarif: codex-security-artifacts/codex-security.sarif

300```

301 

302By default, the job runs only for merge requests from branches in the same

303project, so fork pipelines don't receive the scan credential. Set

304`CODEX_SECURITY_FULL_SCAN_DEFAULT_BRANCH` to `"true"` at the group, project, or

305pipeline level to also run a standard full scan on the default branch. Full

306scans take longer and cost more than diff scans.

307 

308`GIT_DEPTH: "0"` provides the history needed to calculate the merge base from

309`CI_MERGE_REQUEST_DIFF_BASE_SHA` and `CI_COMMIT_SHA` for merge-request scans.

310 

311The job installs the CLI under `/tmp`, runs it by absolute path, and exposes the

312API key only to the scan process. `artifacts: when: always` preserves the SARIF

313report when the scan fails, while `artifacts:access: maintainer` limits access

314to detailed scan results.

315 

316Changes to `.gitlab-ci.yml` can expose CI/CD variables, so review pipeline

317changes before running the job. If you

318[protect `CODEX_SECURITY_API_KEY`](https://docs.gitlab.com/ci/pipelines/merge_request_pipelines/#control-access-to-protected-variables-and-runners),

319GitLab makes it available only for same-project merge requests between

320protected branches and only when the user can access the target branch.

321 

166## Choose a severity policy322## Choose a severity policy

167 323 

168The above workflow is report-only because it omits `--fail-on-severity`.324Both examples are report-only because they omit `--fail-on-severity`. Once you

169Once you are ready to make findings affect the check, add a threshold to the325are ready to make findings affect the check, add a threshold to the scan

170scan command:326command:

171 327 

172```bash328```bash

173"$CODEX_SECURITY_BIN" scan . \329"$CODEX_SECURITY_BIN" scan . \


214- **Protected or non-empty output directory:** Choose a private directory370- **Protected or non-empty output directory:** Choose a private directory

215 outside the enclosing Git worktree. Use `--archive-existing` when the371 outside the enclosing Git worktree. Use `--archive-existing` when the

216 directory already contains results.372 directory already contains results.

217- **Missing credentials:** Confirm the `CODEX_SECURITY_API_KEY` repository373- **Missing credentials:** Confirm that `CODEX_SECURITY_API_KEY` is available to

218 secret is available to the trusted workflow and mapped directly to the scan374 the trusted workflow or pipeline and mapped directly to the scan process's

219 step's `OPENAI_API_KEY` environment variable.375 `OPENAI_API_KEY` environment variable.

220- **Scan history error:** Set `CODEX_SECURITY_STATE_DIR` to a writable376- **Scan history error:** Set `CODEX_SECURITY_STATE_DIR` to a writable

221 directory outside the repository.377 directory outside the repository.

222- **Python setup error:** Confirm that the runner uses Python 3.10 or later.378- **Python setup error:** Confirm that the runner uses Python 3.10 or later.


225- **SARIF export error:** Confirm that the scan completed and the full scan381- **SARIF export error:** Confirm that the scan completed and the full scan

226 directory is available. Export validates the sealed artifacts before writing382 directory is available. Export validates the sealed artifacts before writing

227 SARIF.383 SARIF.

228- **SARIF upload error:** For a private or internal repository, confirm that384- **SARIF upload error:** For GitHub Actions, confirm that your organization

229 your organization turned on GitHub Code Security for the repository and the385 turned on GitHub Code Security for the repository and the workflow grants

230 workflow grants `actions: read`, `contents: read`, and386 `actions: read`, `contents: read`, and `security-events: write`. For GitLab

231 `security-events: write`.387 CI/CD, confirm that the project uses GitLab Ultimate 19.2 or later and that

388 the job uploads a SARIF 2.1.0 file through `artifacts:reports:sarif`.

232 389 

233For every command, flag, artifact, and output field, see the [CLI390For every command, flag, artifact, and output field, see the [CLI

234reference](https://learn.chatgpt.com/docs/security/cli/reference). For an interactive plugin-based CI391reference](https://learn.chatgpt.com/docs/security/cli/reference). For an interactive plugin-based CI

Details

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 

5Security Review is available in research preview.5Codex Security Review is available in research preview.

6It is available to ChatGPT Enterprise, Business, Edu, and Pro customers; it is6It is available to ChatGPT Enterprise, Business, Edu, and Pro customers; it is

7not available on Plus. During the introductory period, Security Review does not7not available on Plus. During the introductory period, Codex Security Review does

8consume ChatGPT credits. Usage limits may apply.8not consume ChatGPT credits. Usage limits may apply.

9 9 

10Security Review is an additional review for customers that want to10Codex Security Review is an additional review for customers that want to

11pay particular attention to security issues in pull requests.11pay particular attention to security issues in pull requests.

12 12 

13Security Review goes deeper than [Code13Codex Security Review goes deeper than [Code

14Review](https://learn.chatgpt.com/docs/third-party/github) on security-specific risks by analyzing the14Review](https://learn.chatgpt.com/docs/third-party/github) on security-specific risks by analyzing the

15pull request diff, supporting repository context, and configured threat models15pull request diff, supporting repository context, and configured threat models

16or security guidance. Code Review can also identify security-related issues as16or security guidance. Code Review can also identify security-related issues as


18 18 

19## Before you start19## Before you start

20 20 

21To configure automatic Security Review, you need:21To configure automatic Codex Security Review, you need:

22 22 

23- Security Review research preview access for your workspace23- Codex Security Review research preview access for your workspace

24- [Codex cloud](https://learn.chatgpt.com/docs/cloud) set up with a connected GitHub repository24- [Codex cloud](https://learn.chatgpt.com/docs/cloud) set up with a connected GitHub repository

25- GitHub push or admin permission for the repository settings25- GitHub push or admin permission for the repository settings

26 26 

27An existing Codex Security scan is optional.27An existing Codex Security scan is optional.

28 28 

29## Configure Security Review29<a id="configure-security-review"></a>

30 

31## Configure Codex Security Review

30 32 

311. Go to [Codex settings](https://chatgpt.com/codex/settings/code-review).331. Go to [Codex settings](https://chatgpt.com/codex/settings/code-review).

322. Under **Repository preferences**, choose which pull requests get Security342. Under **Repository preferences**, choose which pull requests get Codex

33 Review:35 Security Review:

34 - **Follow personal** lets each contributor opt in with their personal36 - **Follow personal** lets each contributor opt in with their personal

35 Security Review settings.37 Codex Security Review settings.

36 - **Review all PRs** applies to every pull request in the repository.38 - **Review all PRs** applies to every pull request in the repository.

37 - **Review team PRs**, when available, applies to pull requests opened by39 - **Review team PRs**, when available, applies to pull requests opened by

38 members of your ChatGPT workspace, not members of a GitHub team.40 members of your ChatGPT workspace, not members of a GitHub team.

393. Choose when Security Review runs:413. Choose when Codex Security Review runs:

40 - **On PR open** runs independently when a pull request is opened.42 - **On PR open** runs independently when a pull request is opened.

41 - **Every push** runs independently after new commits are pushed.43 - **Every push** runs independently after new commits are pushed.

42 - **Whenever code review runs** requires Code Review and runs Security Review44 - **Whenever code review runs** requires Code Review and runs Codex Security

43 alongside it.45 Review alongside it.

44 46 

45## Add threat-model context47## Add threat-model context

46 48 


53 55 

54## Set reporting thresholds56## Set reporting thresholds

55 57 

56By default, automatic Security Reviews report **High** and **Critical**58By default, automatic Codex Security Reviews report **High** and **Critical**

57findings, while manually requested reviews report **Medium**, **High**, and59findings, while manually requested reviews report **Medium**, **High**, and

58**Critical** findings. You can change the minimum severity independently for60**Critical** findings. You can change the minimum severity independently for

59automatic and manual reviews, and add path-based overrides.61automatic and manual reviews, and add path-based overrides.


63including on public repositories or pull requests from contributors outside65including on public repositories or pull requests from contributors outside

64your workspace. Choose reporting thresholds carefully for repositories where66your workspace. Choose reporting thresholds carefully for repositories where

65pull request comments may be broadly visible. The reporting threshold controls67pull request comments may be broadly visible. The reporting threshold controls

66what Codex posts to GitHub; the full Security Review report remains in Codex.68what Codex posts to GitHub; the full Codex Security Review report remains in

69Codex.

70 

71<a id="request-a-security-review"></a>

67 72 

68## Request a Security Review73## Request a Codex Security Review

69 74 

70To request a Security Review manually, add this comment to a pull request:75To request a Codex Security Review manually, add this comment to a pull request:

71 76 

72`@codex security review`77`@codex security review`

73 78