SpyBara
Go Premium

Documentation 2026-08-10 22:00 UTC to 2026-08-11 22:59 UTC

14 files changed +313 −134. 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

app-server.md +1 −1

Details

1276- `turn/completed` - `{ turn }` where `turn.status` is `completed`, `interrupted`, or `failed`; failures carry `{ error: { message, codexErrorInfo?, additionalDetails? } }`.1276- `turn/completed` - `{ turn }` where `turn.status` is `completed`, `interrupted`, or `failed`; failures carry `{ error: { message, codexErrorInfo?, additionalDetails? } }`.

1277- `turn/diff/updated` - `{ threadId, turnId, diff }` with the latest aggregated unified diff across every file change in the turn.1277- `turn/diff/updated` - `{ threadId, turnId, diff }` with the latest aggregated unified diff across every file change in the turn.

1278- `turn/plan/updated` - `{ turnId, explanation?, plan }` whenever the agent shares or changes its plan; each `plan` entry is `{ step, status }` with `status` in `pending`, `inProgress`, or `completed`.1278- `turn/plan/updated` - `{ turnId, explanation?, plan }` whenever the agent shares or changes its plan; each `plan` entry is `{ step, status }` with `status` in `pending`, `inProgress`, or `completed`.

1279- `hook/started` and `hook/completed` - `{ threadId, turnId?, run }` when a lifecycle hook starts and when its final run summary is available.1279- `hook/started` and `hook/completed` - `{ threadId, turnId?, run }` when a synchronous lifecycle hook starts and when its final run summary is available. These notifications aren't emitted for asynchronous hooks.

1280- `model/safetyBuffering/updated` - `{ threadId, turnId, model, useCases, reasons, showBufferingUi, fasterModel }` when a response enters transient safety buffering.1280- `model/safetyBuffering/updated` - `{ threadId, turnId, model, useCases, reasons, showBufferingUi, fasterModel }` when a response enters transient safety buffering.

1281- `model/rerouted` - `{ threadId, turnId, fromModel, toModel, reason }` when the service routes a request to another model.1281- `model/rerouted` - `{ threadId, turnId, fromModel, toModel, reason }` when the service routes a request to another model.

1282- `model/verification` - `{ threadId, turnId, verifications }` when the service requires additional account verification.1282- `model/verification` - `{ threadId, turnId, verifications }` when the service requires additional account verification.

Details

6completed tasks and recent runs in **Scheduled**. You can combine scheduled6completed tasks and recent runs in **Scheduled**. You can combine scheduled

7tasks with [skills](https://learn.chatgpt.com/docs/build-skills) for more complex work.7tasks with [skills](https://learn.chatgpt.com/docs/build-skills) for more complex work.

8 8 

9<YouTubeEmbed title="Schedule tasks with ChatGPT" videoId="CToxp125mhc" />

10 

9<ContentModeSwitch group="codex-surface" id="app">11<ContentModeSwitch group="codex-surface" id="app">

10 12 

11In the ChatGPT desktop app, scheduled tasks can work with local projects and13In the ChatGPT desktop app, scheduled tasks can work with local projects and

Details

6structure, and review criteria that matter for the task. The preview and review6structure, and review criteria that matter for the task. The preview and review

7tools depend on the surface you use.7tools depend on the surface you use.

8 8 

9<YouTubeEmbed

10 title="Work with documents, spreadsheets, and presentations in ChatGPT"

11 videoId="E3dDr_QtBuo"

12/>

13 

9<ContentModeSwitch group="codex-surface" id="app">14<ContentModeSwitch group="codex-surface" id="app">

10 15 

11The ChatGPT desktop app previews generated documents, presentations,16The ChatGPT desktop app previews generated documents, presentations,

Details

1# Cyber Safety1# Models and Trusted Access

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 

5Daybreak Blue and Daybreak Red help approved users move from findings to validated fixes during authorized defensive cybersecurity work. Combine the right model with a controlled environment, a written engagement scope, least-privilege permissions, and automatic review before sensitive actions run.5OpenAI Daybreak helps approved users perform authorized defensive cybersecurity work. Daybreak Blue provides access to frontier models with reduced refusals for authorized defensive workflows. Daybreak Red provides separately approved access to specialist cyber models for more advanced security research.

6 6 

7## Choose the right access tier7Combine your approved model with a controlled environment, clear limits on approved systems and actions, least-privilege permissions, and automatic review before sensitive actions run. Use the model only with the approved identity, workspace or API organization and project, and product surface.

8 8 

9Start with **Daybreak Blue**, which provides access to frontier models such as GPT-5.6 Sol, for most authorized defensive work, including:9## Choose the right model

10 

11Start with **GPT-Daybreak-Blue** for most authorized defensive work. This model provides access to frontier capabilities with reduced refusals for defensive security workflows, including:

10 12 

11- Vulnerability discovery and triage.13- Vulnerability discovery and triage.

12- Secure code review and threat modeling.14- Secure code review and threat modeling.


14- Malware analysis in a controlled environment.16- Malware analysis in a controlled environment.

15- Remediation and patch validation.17- Remediation and patch validation.

16 18 

17**Daybreak Red** provides separately approved access to purpose-trained cybersecurity models such as GPT-5.6 Cyber for explicitly authorized specialist workflows, including controlled vulnerability reproduction, proof-of-concept or exploit validation, penetration testing, red teaming, and complex system analysis. It isn't the default choice for routine security work, and access isn't available automatically or on every surface.19**GPT-Daybreak-Red** is a specialist cyber model for separately approved, explicitly authorized workflows, such as controlled vulnerability reproduction, proof-of-concept or exploit validation, penetration testing, red teaming, and complex system analysis. It isn't the default choice for routine security work, and access isn't available automatically or on every surface.

18 20 

19These advanced workflows can resemble malicious activity without the authorized engagement context. Use the approved model and surface only for systems you own or are explicitly authorized to assess, and keep appropriate human oversight in place.21These advanced workflows can resemble malicious activity without clear authorization. Use the approved model and surface only for systems you own or are explicitly authorized to assess, and keep appropriate human oversight in place.

20 22 

21For example:23For example:

22 24 

23- **Daybreak Blue:** Review the approved lab repository for authentication weaknesses, rank findings by evidence and impact, and propose patches without accessing external systems.25- **GPT-Daybreak-Blue:** Review the approved lab repository for authentication weaknesses, rank findings by evidence and impact, and propose patches without accessing external systems.

24- **Daybreak Red:** Within the approved lab and engagement window, reproduce the documented authentication flaw, validate a minimal proof of concept, and stop before credential access, persistence, or production changes.26- **GPT-Daybreak-Red:** Within the approved lab and testing window, reproduce the documented authentication flaw, validate a minimal proof of concept, and stop before credential access, persistence, or production changes.

25 27 

26## Trusted Access for Cyber28## Trusted Access for Cyber

27 29 

28[Trusted Access for Cyber](https://openai.com/index/trusted-access-for-cyber/) is the reviewed access program; Daybreak Blue and Daybreak Red are access tiers for approved models. Access depends on approval and provisioning for your specific identity or service, ChatGPT workspace or API organization and project, authorized model, and allowed product surface.30Request **Daybreak access** through [Trusted Access for Cyber](https://help.openai.com/en/articles/20001258-trusted-access-for-cyber). Access depends on approval and provisioning for your specific identity or service, ChatGPT workspace or API organization and project, authorized offering and model, and allowed product surface.

29 31 

30- Individuals can request access through the [individual Trusted Access application](https://chatgpt.com/cyber).32- Individuals can request access through the [individual Trusted Access application](https://chatgpt.com/cyber).

31- Organizations can submit the [enterprise Trusted Access request form](https://openai.com/form/enterprise-trusted-access-for-cyber/) and coordinate with their OpenAI representative.33- Organizations can submit the [enterprise Trusted Access request form](https://openai.com/form/enterprise-trusted-access-for-cyber/) and coordinate with their OpenAI representative.


33Submitting an application or completing identity verification doesn't guarantee approval.35Submitting an application or completing identity verification doesn't guarantee approval.

34 36 

35Applying, verifying your identity, or receiving approval for Daybreak Blue37Applying, verifying your identity, or receiving approval for Daybreak Blue

36 doesn't grant access to Daybreak Red. Specialist access requires separate38 doesn't grant access to Daybreak Red or GPT-Daybreak-Red. The specialist

37 approval and provisioning.39 offering requires separate approval and provisioning.

38 40 

39For enterprise access, use the approved workspace, API organization, or project only for your organization's authorized internal work. Don't extend it to external users, third-party customers, externally offered services, downstream product features, or systems outside the approved engagement. If the approved identity, workspace, API organization, project, model, or surface is unclear, stop and confirm it with your OpenAI representative.41For enterprise access, use the approved workspace, API organization, or project only for your organization's authorized internal work. Don't extend it to external users, third-party customers, externally offered services, downstream product features, or systems outside the approved work. If the approved identity, workspace, API organization, project, model, or surface is unclear, stop and confirm it with your OpenAI representative.

40 42 

41Trusted Access doesn't automatically grant [Zero Data Retention](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). Confirm any separately approved retention controls for the exact API organization and applicable endpoint before you begin.43Trusted Access doesn't automatically grant [Zero Data Retention](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). Confirm any separately approved retention controls for the exact API organization and applicable endpoint before you begin.

42 44 

43## Configure a controlled cybersecurity engagement45## False positives

44 

45Trusted Access governs approved model access, but it doesn't configure your environment or enforce your engagement scope. Your team must set up the following isolation, permission, review, and human-oversight controls.

46 

47### Isolate the environment

48 

49Run the engagement in a controlled lab or sandbox. Start without unrestricted internet access, access to sensitive production systems, or access to unrelated infrastructure. Keep secrets, credentials, persistent access, and durable system changes out of reach unless the written engagement explicitly requires and authorizes them.

50 

51Test filesystem and network boundaries before beginning higher-risk work. Keep the host environment isolated even when the model or reviewer approves an individual action.

52 

53### Define and enforce the engagement scope

54 

55Document the rules of engagement before the model starts. Include:

56 

57- Approved target systems, hosts, and environments.

58- Excluded systems, including production and unrelated infrastructure.

59- Approved and prohibited actions.

60- The engagement window and data-handling requirements.

61- Vulnerability disclosure, patch approval, and maintainer coordination.

62- Stop conditions and actions that require explicit human approval.

63 

64Give the agent the relevant scope as task context. This written scope doesn't enforce itself: apply independent filesystem, network, identity, and tool controls to make unauthorized actions impossible whenever practical.

65 

66Use Codex [permission profiles](https://learn.chatgpt.com/docs/permissions) to create a least-privilege boundary. Choose `:read-only` when the task doesn't require changes, or extend `:workspace` when the engagement needs workspace edits. For example:

67 

68```toml

69approval_policy = "on-request"

70approvals_reviewer = "auto_review"

71default_permissions = "cyber-lab"

72 

73[permissions.cyber-lab]

74description = "Limit security testing to the approved lab and workspace."

75extends = ":workspace"

76 

77[permissions.cyber-lab.filesystem]

78glob_scan_max_depth = 3

79 

80[permissions.cyber-lab.filesystem.":workspace_roots"]

81"**/.env*" = "deny"

82"**/*.pem" = "deny"

83 

84[permissions.cyber-lab.network]

85enabled = true

86# Uncomment only for an approved host that resolves to a private address.

87# allow_local_binding = true

88 

89[permissions.cyber-lab.network.domains]

90"lab.example.com" = "allow"

91```

92 

93Replace `lab.example.com` with an approved target. The bounded filesystem scan avoids searching the entire workspace on Linux, WSL, and Windows; increase the depth or use exact deny paths if sensitive files appear deeper. Don't combine permission profiles with legacy `sandbox_mode` settings; follow the [permission-profile configuration guidance](https://learn.chatgpt.com/docs/permissions#define-and-select-a-profile).

94 

95If the approved lab host resolves to a private address, Codex blocks it by default even when the host is on the allowlist. Set `allow_local_binding = true` only for an explicitly approved private-network engagement, keep the destination allowlist narrow, and review the [local and private network guidance](https://learn.chatgpt.com/docs/permissions#local-and-private-networks). You can also allowlist the exact approved private IP address.

96 

97Avoid `:danger-full-access` and `--yolo` for cybersecurity engagements. Full Access removes the enforceable sandbox boundary that automatic review depends on. Managed organizations can exclude `:danger-full-access`, limit allowed approval policies, and require automatic review through [enterprise-managed configuration](https://learn.chatgpt.com/docs/enterprise/managed-configuration#configure-automatic-review-policy).

98 

99Before enabling **Full Access** for an approved security model, the

100ChatGPT desktop app shows a model-specific warning about dangerous actions. The

101warning recommends **Approve for me** instead and links to

102[reviewer-policy configuration](https://learn.chatgpt.com/docs/sandboxing/auto-review#configuration).

103The warning doesn't restore the sandbox boundary or override organization

104policy.

105 

106### Review sensitive actions before execution

107 

108[Auto-review](https://learn.chatgpt.com/docs/sandboxing/auto-review) routes eligible sandbox-boundary approval requests to a separate reviewer before the proposed action runs. The reviewer considers the proposed action, bounded task context, and applicable policy, then allows or denies the request. Organizations can customize that policy for their approved targets, prohibited actions, and required human-review conditions.

109 

110In the ChatGPT desktop app, selecting an approved Daybreak model

111automatically switches the permissions control to **Approve for me** when that

112mode is available for your account and allowed by organization policy. This

113also applies when you use the desktop app's `/model` command. If that mode

114isn't available, the current permission mode stays unchanged. Model selection

115never overrides managed organization requirements.

116 

117For automatic review to run, keep all three controls in place:

118 

1191. Use an interactive approval policy such as `approval_policy = "on-request"`.

1202. Set `approvals_reviewer = "auto_review"`.

1213. Keep an enforceable sandbox or permission-profile boundary.

122 

123Requests to a target on the network allowlist stay inside the network boundary and don't automatically trigger Auto-review. To review a sensitive command even when its destination is on the allowlist, create an explicit [command rule](https://learn.chatgpt.com/docs/agent-configuration/rules) under `~/.codex/rules/`:

124 

125```python

126prefix_rule(

127 pattern = ["curl"],

128 decision = "prompt",

129 justification = "Review requests to the approved cybersecurity target.",

130)

131```

132 

133Restart Codex after adding the rule. With `approvals_reviewer = "auto_review"`, matching commands go to the reviewer before execution. Add corresponding prompt rules for every sensitive command, or use `approval_mode = "prompt"` for individual [MCP tools](https://learn.chatgpt.com/docs/extend/mcp). Actions that require a person's decision still need explicit human approval.

134 

135Auto-review doesn't inspect routine actions that are already permitted inside the sandbox. With `approval_policy = "never"` or Full Access, a sensitive action might not create a reviewable approval request. Automatic review can make mistakes and doesn't replace isolation, written scope, monitoring, or explicit human oversight.

136 

137For a scoped policy and organization-wide enforcement, see [Configure an authorized cybersecurity engagement](https://learn.chatgpt.com/docs/sandboxing/auto-review#configure-an-authorized-cybersecurity-engagement).

138 

139## Apply the same controls in custom agent workflows

140 

141If you build with the Responses API, the Agents SDK, or another harness, add review at the tool-execution boundary. Check sensitive proposed actions against the approved engagement scope before execution, route ambiguous or high-risk actions to a person, enforce independent filesystem and network restrictions, keep audit logs, and fail closed if the reviewer or policy is unavailable.

142 46 

143Codex Auto-review doesn't automatically protect custom tools or external harnesses. Use [Guardrails and human review](https://developers.openai.com/api/docs/guides/agents/guardrails-approvals#review-cybersecurity-actions-before-execution) for the Agents SDK pattern and the [open-source reviewer policy](https://github.com/openai/codex/blob/main/codex-rs/core/src/guardian/policy.md) as a reference.47Legitimate cybersecurity or unrelated activity can still trigger a safeguard. If a safeguard blocks, reroutes, or limits a request, inspect the available client notice and request logs. Review [Common Issues and Troubleshooting](https://help.openai.com/en/articles/20001259) for details to collect and next steps. Report suspected Codex false positives through `/feedback` when available. For API access restrictions and appeals, follow the [API cybersecurity checks guidance](https://developers.openai.com/api/docs/guides/safety-checks/cybersecurity#appeals).

144 48 

145Codex product-side sandboxing and review are separate from [API cybersecurity checks](https://developers.openai.com/api/docs/guides/safety-checks/cybersecurity). API safeguards can return `cyber_policy` errors, and per-user `safety_identifier` values can help limit the impact of a safeguard action.49All users remain subject to the [Usage Policies](https://openai.com/policies/usage-policies/) and [Terms of Use](https://openai.com/policies/row-terms-of-use/).

146 50 

147## False positives51## Configure your security workflow

148 52 

149Legitimate cybersecurity or unrelated activity can still trigger a safeguard. If a safeguard blocks, reroutes, or limits a request, inspect the available client notice and request logs. Report suspected Codex false positives through `/feedback` when available. For API access restrictions and appeals, follow the [API cybersecurity checks guidance](https://developers.openai.com/api/docs/guides/safety-checks/cybersecurity#appeals).53Trusted Access governs approved model access, but it doesn't configure your environment, enforce limits on approved systems and actions, or review proposed actions.

150 54 

151All users remain subject to the [Usage Policies](https://openai.com/policies/usage-policies/) and [Terms of Use](https://openai.com/policies/row-terms-of-use/).55- [Use the recommended configuration](https://learn.chatgpt.com/docs/cyber-safety/recommended-configuration) for isolation, least-privilege permissions, clearly defined boundaries, and guardrails for sensitive actions.

Details

236`decision = "prompt"`, or configure sensitive MCP tools to require approval,236`decision = "prompt"`, or configure sensitive MCP tools to require approval,

237when actions inside the sandbox must still reach the reviewer.237when actions inside the sandbox must still reach the reviewer.

238 238 

239See [Cyber Safety](https://learn.chatgpt.com/docs/cyber-safety) for model access, engagement setup, and239See [Models and Trusted Access](https://learn.chatgpt.com/docs/cyber-safety) and [recommended

240custom agent workflows, and [Managed configuration](https://learn.chatgpt.com/docs/enterprise/managed-configuration#configure-automatic-review-policy)240configuration](https://learn.chatgpt.com/docs/cyber-safety/recommended-configuration) for model access,

241engagement setup, and custom agent workflows. See [Managed configuration](https://learn.chatgpt.com/docs/enterprise/managed-configuration#configure-automatic-review-policy)

241for enterprise precedence and supported client versions. For custom API or242for enterprise precedence and supported client versions. For custom API or

242Agents SDK harnesses, use [Guardrails and human review](https://developers.openai.com/api/docs/guides/agents/guardrails-approvals#review-cybersecurity-actions-before-execution).243Agents SDK harnesses, use [Guardrails and human review](https://developers.openai.com/api/docs/guides/agents/guardrails-approvals#review-cybersecurity-actions-before-execution).

243 244 

Details

435 description:435 description:

436 "Hook handlers for a matcher group. Command hooks are currently supported; prompt and agent hook handlers are parsed but skipped.",436 "Hook handlers for a matcher group. Command hooks are currently supported; prompt and agent hook handlers are parsed but skipped.",

437 },437 },

438 {

439 key: "hooks.<Event>[].hooks[].async",

440 type: "boolean",

441 description:

442 "Run a command hook in the background without delaying the triggering operation. Defaults to `false`; `SessionEnd` always runs synchronously. See [Run hooks in the background](https://learn.chatgpt.com/docs/hooks#run-hooks-in-the-background).",

443 },

438 {444 {

439 key: "hooks.<Event>[].hooks[].additionalContextLimit",445 key: "hooks.<Event>[].hooks[].additionalContextLimit",

440 type: "integer",446 type: "integer",


2063 description:2069 description:

2064 "Hook handlers for a matcher group. Command hooks are currently supported; prompt and agent hook handlers are parsed but skipped.",2070 "Hook handlers for a matcher group. Command hooks are currently supported; prompt and agent hook handlers are parsed but skipped.",

2065 },2071 },

2072 {

2073 key: "hooks.<Event>[].hooks[].async",

2074 type: "boolean",

2075 description:

2076 "Run a command hook in the background without delaying the triggering operation. Defaults to `false`; `SessionEnd` always runs synchronously. See [Run hooks in the background](https://learn.chatgpt.com/docs/hooks#run-hooks-in-the-background).",

2077 },

2066 {2078 {

2067 key: "hooks.<Event>[].hooks[].additionalContextLimit",2079 key: "hooks.<Event>[].hooks[].additionalContextLimit",

2068 type: "integer",2080 type: "integer",

Details

435 description:435 description:

436 "Hook handlers for a matcher group. Command hooks are currently supported; prompt and agent hook handlers are parsed but skipped.",436 "Hook handlers for a matcher group. Command hooks are currently supported; prompt and agent hook handlers are parsed but skipped.",

437 },437 },

438 {

439 key: "hooks.<Event>[].hooks[].async",

440 type: "boolean",

441 description:

442 "Run a command hook in the background without delaying the triggering operation. Defaults to `false`; `SessionEnd` always runs synchronously. See [Run hooks in the background](https://learn.chatgpt.com/docs/hooks#run-hooks-in-the-background).",

443 },

438 {444 {

439 key: "hooks.<Event>[].hooks[].additionalContextLimit",445 key: "hooks.<Event>[].hooks[].additionalContextLimit",

440 type: "integer",446 type: "integer",


2063 description:2069 description:

2064 "Hook handlers for a matcher group. Command hooks are currently supported; prompt and agent hook handlers are parsed but skipped.",2070 "Hook handlers for a matcher group. Command hooks are currently supported; prompt and agent hook handlers are parsed but skipped.",

2065 },2071 },

2072 {

2073 key: "hooks.<Event>[].hooks[].async",

2074 type: "boolean",

2075 description:

2076 "Run a command hook in the background without delaying the triggering operation. Defaults to `false`; `SessionEnd` always runs synchronously. See [Run hooks in the background](https://learn.chatgpt.com/docs/hooks#run-hooks-in-the-background).",

2077 },

2066 {2078 {

2067 key: "hooks.<Event>[].hooks[].additionalContextLimit",2079 key: "hooks.<Event>[].hooks[].additionalContextLimit",

2068 type: "integer",2080 type: "integer",

developers.md +4 −0

Details

6 title="Developers"6 title="Developers"

7 description="Use Codex with codebases, development environments, automation, and your team's tools."7 description="Use Codex with codebases, development environments, automation, and your team's tools."

8 intro="Codex supports everyday code work and deeper integrations across local and cloud environments. Its developer workflows span code review, the integrated terminal, reusable skills and plugins, automation with the SDK and App Server, team tools, and reference material for each surface."8 intro="Codex supports everyday code work and deeper integrations across local and cloud environments. Its developer workflows span code review, the integrated terminal, reusable skills and plugins, automation with the SDK and App Server, team tools, and reference material for each surface."

9 video={{

10 title: "What's new in Codex for engineers",

11 videoId: "eiQgljOrkWU",

12 }}

9 primaryCta={{13 primaryCta={{

10 label: "Explore workflows",14 label: "Explore workflows",

11 href: "/codex/code-review?surface=app",15 href: "/codex/code-review?surface=app",

hooks.md +82 −5

Details

187 preview instead. See [Large hook output](#large-hook-output).187 preview instead. See [Large hook output](#large-hook-output).

188- `commandWindows` is an optional Windows-only command override. In TOML, use188- `commandWindows` is an optional Windows-only command override. In TOML, use

189 `command_windows` or `commandWindows`.189 `command_windows` or `commandWindows`.

190- The `async` option is parsed, but asynchronous command hooks aren't supported190- Set `async` to `true` to [run a command hook in the

191 yet.191 background](#run-hooks-in-the-background).

192- Only `type: "command"` handlers run today. `prompt` and `agent` handlers are192- Only `type: "command"` handlers run today. `prompt` and `agent` handlers are

193 parsed but skipped.193 parsed but skipped.

194- Commands run with the session `cwd` as their working directory.194- Commands run with the session `cwd` as their working directory.


474Because oversized output can be written to disk, avoid returning secrets or474Because oversized output can be written to disk, avoid returning secrets or

475other sensitive data in hook output.475other sensitive data in hook output.

476 476 

477## Run hooks in the background

478 

479By default, Codex waits for a command hook to finish before continuing the

480operation that triggered it. Set `async` to `true` to run a command hook in the

481background while Codex continues.

482 

483### Configure a background hook

484 

485Add `"async": true` to a command handler in `hooks.json`:

486 

487```json

488{

489 "hooks": {

490 "PostToolUse": [

491 {

492 "matcher": "Bash",

493 "hooks": [

494 {

495 "type": "command",

496 "command": "python3 ~/.codex/hooks/post_tool_use.py",

497 "async": true,

498 "timeout": 120

499 }

500 ]

501 }

502 ]

503 }

504}

505```

506 

507For an inline hook in `config.toml`, set `async = true`:

508 

509```toml

510[[hooks.PostToolUse]]

511matcher = "Bash"

512 

513[[hooks.PostToolUse.hooks]]

514type = "command"

515command = "python3 ~/.codex/hooks/post_tool_use.py"

516async = true

517timeout = 120

518```

519 

520Background hooks use the same input, matcher, trust review, timeout, and

521[large-output handling](#large-hook-output) as synchronous command hooks. As

522with other command hooks, `timeout` is measured in seconds and defaults to

523`600`.

524 

525### How background hooks run

526 

527When a background hook finishes, Codex delivers supported informational output

528at the next safe point in the conversation:

529 

530- If a turn is active, Codex waits for the current model request and tool calls

531 to finish, then makes the output available to the next model request in that

532 turn.

533- If no turn is active, Codex waits until the next user turn. Finishing a

534 background hook doesn't start a new turn.

535 

536Use the same event-specific JSON output as a synchronous hook. Codex adds

537`additionalContext` to the model's context and surfaces `systemMessage` as a

538warning.

539 

540Background hooks can't block, approve, rewrite, or otherwise control the

541 operation that triggered them. Use synchronous hooks for tool policies,

542 permission decisions, prompt rejection, or turn continuation.

543 

544### Limitations

545 

546- Codex runs up to eight background hooks concurrently per session. Additional

547 hooks wait until a running hook finishes.

548- Each matching invocation runs independently, and background hooks can finish

549 in a different order than they started.

550- When the session ends, Codex cancels unfinished background hooks and discards

551 output that hasn't been delivered.

552- `SessionEnd` hooks always run synchronously.

553 

477## Hooks554## Hooks

478 555 

479### SessionStart556### SessionStart


542}619}

543```620```

544 621 

545`SessionEnd` hooks are advisory. Their output won't steer Codex or keep the622`SessionEnd` hooks always run synchronously, even when `async` is `true`. They

546thread open. If a command times out or exits with an error, Codex reports it as623are advisory, so their output won't steer Codex or keep the thread open. If a

547a hook failure.624command times out or exits with an error, Codex reports it as a hook failure.

548 625 

549### SubagentStart626### SubagentStart

550 627 

import.md +19 −3

Details

4 4 

5Use the import flow to bring instructions, settings, skills, plugins, projects,5Use the import flow to bring instructions, settings, skills, plugins, projects,

6and recent work from another agent into the ChatGPT desktop app or Codex CLI.6and recent work from another agent into the ChatGPT desktop app or Codex CLI.

7Codex CLI and the desktop app can import from **Claude Code**.7The desktop app can import from supported agents, including **Claude Code** and

8**Cursor**. Codex CLI can import from **Claude Code**.

8 9 

9The desktop app imports supported items directly and lets you finish setup for10The desktop app imports supported items directly and lets you finish setup for

10imported plugins or connections that need authorization.11imported plugins or connections that need authorization. You can also keep

12imported work in sync with automatic updates.

11 13 

12Importing doesn't change or delete your existing agent setup.14Importing doesn't change or delete your existing agent setup.

13 15 

14<Illustration description="ChatGPT import screen for choosing other AI apps to import from.">16<Illustration description="ChatGPT import screen for choosing other AI apps to import from.">

15 <ExternalAgentImportIllustration step="providers" />17 <ExternalAgentImportIllustration

18 step="providers"

19 providers={[

20 { label: "Claude Code", icon: "code", selected: true },

21 { label: "Claude Cowork", icon: "tasks", selected: true },

22 { label: "Cursor", icon: "code", selected: true },

23 ]}

24 note="Your existing agent setup won't be affected."

25 />

16</Illustration>26</Illustration>

17 27 

18## Start an import28## Start an import


31 41 

32</WorkflowSteps>42</WorkflowSteps>

33 43 

44### Keep imported work in sync

45 

46In the ChatGPT desktop app, open **Settings > Import** and turn on automatic

47updates to keep imported work in sync with the original agent. You can also

48review your import history from the same settings section.

49 

34### Import in Codex CLI50### Import in Codex CLI

35 51 

361. Start a local Codex CLI session and type `/import`.521. Start a local Codex CLI session and type `/import`.

sdk.md +3 −3

Details

80 80 

81Published SDK builds automatically use their pinned runtime. Pass `CodexConfig(codex_bin=...)` only when you intentionally want to run against a specific local Codex executable.81Published SDK builds automatically use their pinned runtime. Pass `CodexConfig(codex_bin=...)` only when you intentionally want to run against a specific local Codex executable.

82 82 

83While the Python SDK is in beta, `pip install openai-codex` selects the latest83The Python SDK is available as a stable release. `pip install openai-codex`

84published beta build. After a stable SDK release exists, use84installs the latest stable release. Use `pip install --pre openai-codex` to opt

85`pip install --pre openai-codex` to opt in to newer prerelease builds.85in to newer prerelease builds.

86 86 

87### Usage87### Usage

88 88 

Details

117 ],117 ],

118 },118 },

119 {119 {

120 title: "Safety",120 title: "Cyber safety",

121 description: "Review policy and safeguards for cybersecurity tasks.",121 description: "Choose approved models and configure safe engagements.",

122 pages: [122 pages: [

123 {123 {

124 title: "Cyber safety",124 title: "Models & Trusted Access",

125 description:125 description:

126 "Understand how Codex handles security-sensitive requests.",126 "Choose a cybersecurity model and request Trusted Access.",

127 href: "/codex/cyber-safety",127 href: "/codex/cyber-safety",

128 icon: "userLock",128 icon: "userLock",

129 },129 },

130 {

131 title: "Recommended configuration",

132 description:

133 "Isolate the environment, enforce scope, and review sensitive actions.",

134 href: "/codex/cyber-safety/recommended-configuration",

135 icon: "settings",

136 },

130 ],137 ],

131 },138 },

132 ]}139 ]}

Details

6right instructions, resources, and tools. They reduce the need to paste the6right instructions, resources, and tools. They reduce the need to paste the

7same prompt, template, requirements, or process into every chat.7same prompt, template, requirements, or process into every chat.

8 8 

9<YouTubeEmbed title="Plugins in ChatGPT" videoId="pKwRNdDtai0" />

10 

9- A **skill** packages instructions and supporting resources for a specific11- A **skill** packages instructions and supporting resources for a specific

10 task or workflow.12 task or workflow.

11- A **plugin** is an installable bundle that can include skills, connectors, or13- A **plugin** is an installable bundle that can include skills, connectors, or