SpyBara
Go Premium Account
2026
23 Apr 2026, 18:31
19 May 2026, 11:58 18 May 2026, 22:01 14 May 2026, 21:00 14 May 2026, 07:00 13 May 2026, 00:57 12 May 2026, 01:59 11 May 2026, 18:00 7 May 2026, 20:02 7 May 2026, 17:08 5 May 2026, 23:00 2 May 2026, 06:45 2 May 2026, 00:48 1 May 2026, 18:29 30 Apr 2026, 18:36 29 Apr 2026, 12:40 29 Apr 2026, 00:50 25 Apr 2026, 06:37 25 Apr 2026, 00:42 24 Apr 2026, 18:20 24 Apr 2026, 12:28 23 Apr 2026, 18:31 23 Apr 2026, 12:28 23 Apr 2026, 00:46 22 Apr 2026, 18:29 22 Apr 2026, 00:42 21 Apr 2026, 18:29 21 Apr 2026, 12:30 21 Apr 2026, 06:45 20 Apr 2026, 18:26 20 Apr 2026, 06:53 18 Apr 2026, 18:18 17 Apr 2026, 00:44 16 Apr 2026, 18:31 16 Apr 2026, 00:46 15 Apr 2026, 18:31 15 Apr 2026, 06:44 14 Apr 2026, 18:31 14 Apr 2026, 12:29 13 Apr 2026, 18:37 13 Apr 2026, 00:44 12 Apr 2026, 06:38 10 Apr 2026, 18:23 9 Apr 2026, 00:33 8 Apr 2026, 18:32 8 Apr 2026, 00:40 7 Apr 2026, 00:40 2 Apr 2026, 18:23 31 Mar 2026, 06:35 31 Mar 2026, 00:39 28 Mar 2026, 06:26 28 Mar 2026, 00:36 27 Mar 2026, 18:23 27 Mar 2026, 00:39 26 Mar 2026, 18:27 25 Mar 2026, 18:24 23 Mar 2026, 18:22 20 Mar 2026, 00:35 18 Mar 2026, 12:23 18 Mar 2026, 00:36 17 Mar 2026, 18:24 17 Mar 2026, 00:33 16 Mar 2026, 18:25 16 Mar 2026, 12:23 14 Mar 2026, 00:32 13 Mar 2026, 18:15 13 Mar 2026, 00:34 11 Mar 2026, 00:31 9 Mar 2026, 00:34 8 Mar 2026, 18:10 8 Mar 2026, 00:35 7 Mar 2026, 18:10 7 Mar 2026, 06:14 7 Mar 2026, 00:33 6 Mar 2026, 00:38 5 Mar 2026, 18:41 5 Mar 2026, 06:22 5 Mar 2026, 00:34 4 Mar 2026, 18:18 4 Mar 2026, 06:20 3 Mar 2026, 18:20 3 Mar 2026, 00:35 27 Feb 2026, 18:15 24 Feb 2026, 06:27 24 Feb 2026, 00:33 23 Feb 2026, 18:27 21 Feb 2026, 00:33 20 Feb 2026, 12:16 19 Feb 2026, 20:53 19 Feb 2026, 20:37
18 May 2026, 22:01
19 May 2026, 11:58 18 May 2026, 22:01 14 May 2026, 21:00 14 May 2026, 07:00 13 May 2026, 00:57 12 May 2026, 01:59 11 May 2026, 18:00 7 May 2026, 20:02 7 May 2026, 17:08 5 May 2026, 23:00 2 May 2026, 06:45 2 May 2026, 00:48 1 May 2026, 18:29 30 Apr 2026, 18:36 29 Apr 2026, 12:40 29 Apr 2026, 00:50 25 Apr 2026, 06:37 25 Apr 2026, 00:42 24 Apr 2026, 18:20 24 Apr 2026, 12:28 23 Apr 2026, 18:31 23 Apr 2026, 12:28 23 Apr 2026, 00:46 22 Apr 2026, 18:29 22 Apr 2026, 00:42 21 Apr 2026, 18:29 21 Apr 2026, 12:30 21 Apr 2026, 06:45 20 Apr 2026, 18:26 20 Apr 2026, 06:53 18 Apr 2026, 18:18 17 Apr 2026, 00:44 16 Apr 2026, 18:31 16 Apr 2026, 00:46 15 Apr 2026, 18:31 15 Apr 2026, 06:44 14 Apr 2026, 18:31 14 Apr 2026, 12:29 13 Apr 2026, 18:37 13 Apr 2026, 00:44 12 Apr 2026, 06:38 10 Apr 2026, 18:23 9 Apr 2026, 00:33 8 Apr 2026, 18:32 8 Apr 2026, 00:40 7 Apr 2026, 00:40 2 Apr 2026, 18:23 31 Mar 2026, 06:35 31 Mar 2026, 00:39 28 Mar 2026, 06:26 28 Mar 2026, 00:36 27 Mar 2026, 18:23 27 Mar 2026, 00:39 26 Mar 2026, 18:27 25 Mar 2026, 18:24 23 Mar 2026, 18:22 20 Mar 2026, 00:35 18 Mar 2026, 12:23 18 Mar 2026, 00:36 17 Mar 2026, 18:24 17 Mar 2026, 00:33 16 Mar 2026, 18:25 16 Mar 2026, 12:23 14 Mar 2026, 00:32 13 Mar 2026, 18:15 13 Mar 2026, 00:34 11 Mar 2026, 00:31 9 Mar 2026, 00:34 8 Mar 2026, 18:10 8 Mar 2026, 00:35 7 Mar 2026, 18:10 7 Mar 2026, 06:14 7 Mar 2026, 00:33 6 Mar 2026, 00:38 5 Mar 2026, 18:41 5 Mar 2026, 06:22 5 Mar 2026, 00:34 4 Mar 2026, 18:18 4 Mar 2026, 06:20 3 Mar 2026, 18:20 3 Mar 2026, 00:35 27 Feb 2026, 18:15 24 Feb 2026, 06:27 24 Feb 2026, 00:33 23 Feb 2026, 18:27 21 Feb 2026, 00:33 20 Feb 2026, 12:16 19 Feb 2026, 20:53 19 Feb 2026, 20:37
Fri 1 18:29 Sat 2 00:48 Sat 2 06:45 Tue 5 23:00 Thu 7 17:08 Thu 7 20:02 Mon 11 18:00 Tue 12 01:59 Wed 13 00:57 Thu 14 07:00 Thu 14 21:00 Mon 18 22:01 Tue 19 11:58

After 2026-05-02 06:45 UTC, this monitor no longer uses markdownified HTML/MDX. Comparisons across that boundary can therefore show more extensive diffs.

config-advanced.md +90 −19

Details

84 84 

85In addition to your user config, Codex reads project-scoped overrides from `.codex/config.toml` files inside your repo. Codex walks from the project root to your current working directory and loads every `.codex/config.toml` it finds. If multiple files define the same key, the closest file to your working directory wins.85In addition to your user config, Codex reads project-scoped overrides from `.codex/config.toml` files inside your repo. Codex walks from the project root to your current working directory and loads every `.codex/config.toml` it finds. If multiple files define the same key, the closest file to your working directory wins.

86 86 

87For security, Codex loads project-scoped config files only when the project is trusted. If the project is untrusted, Codex ignores `.codex/config.toml` files in the project.87For security, Codex loads project-scoped config files only when the project is trusted. If the project is untrusted, Codex ignores project `.codex/` layers, including `.codex/config.toml`, project-local hooks, and project-local rules. User and system layers remain separate and still load.

88 88 

89Relative paths inside a project config (for example, `model_instructions_file`) are resolved relative to the `.codex/` folder that contains the `config.toml`.89Relative paths inside a project config (for example, `model_instructions_file`) are resolved relative to the `.codex/` folder that contains the `config.toml`.

90 90 

91## Hooks (experimental)91Project config files can't override settings that redirect credentials, change

92provider auth, or run machine-local notification/telemetry commands.

93Codex ignores the following keys in project-local `.codex/config.toml` and

94prints a startup warning when it sees them: `openai_base_url`,

95`chatgpt_base_url`, `model_provider`, `model_providers`, `notify`, `profile`,

96`profiles`, `experimental_realtime_ws_base_url`, and `otel`. Set those keys in

97your user-level `~/.codex/config.toml` instead.

92 98 

93Codex can also load lifecycle hooks from `hooks.json` files that sit next to99## Hooks

94active config layers.

95 100 

96In practice, the two most useful locations are:101Codex can also load lifecycle hooks from either `hooks.json` files or inline

102`[hooks]` tables in `config.toml` files that sit next to active config layers.

103 

104In practice, the four most useful locations are:

97 105 

98- `~/.codex/hooks.json`106- `~/.codex/hooks.json`

107- `~/.codex/config.toml`

99- `<repo>/.codex/hooks.json`108- `<repo>/.codex/hooks.json`

109- `<repo>/.codex/config.toml`

110 

111Project-local hooks load only when the project `.codex/` layer is trusted.

112User-level hooks remain independent of project trust.

100 113 

101Turn hooks on with:114Inline TOML hooks use the same event structure as `hooks.json`:

102 115 

103```toml116```toml

104[features]117[[hooks.PreToolUse]]

105codex_hooks = true118matcher = "^Bash$"

119 

120[[hooks.PreToolUse.hooks]]

121type = "command"

122command = '/usr/bin/python3 "$(git rev-parse --show-toplevel)/.codex/hooks/pre_tool_use_policy.py"'

123timeout = 30

124statusMessage = "Checking Bash command"

106```125```

107 126 

127If a single layer contains both `hooks.json` and inline `[hooks]`, Codex loads

128both and warns. Prefer one representation per layer.

129 

108For the current event list, input fields, output behavior, and limitations, see130For the current event list, input fields, output behavior, and limitations, see

109[Hooks](https://developers.openai.com/codex/hooks).131[Hooks](https://developers.openai.com/codex/hooks).

110 132 


175 197 

176The auth command receives no `stdin` and must print the token to stdout. Codex trims surrounding whitespace, treats an empty token as an error, and refreshes proactively at `refresh_interval_ms`; set `refresh_interval_ms = 0` to refresh only after an authentication retry. Don't combine `[model_providers.<id>.auth]` with `env_key`, `experimental_bearer_token`, or `requires_openai_auth`.198The auth command receives no `stdin` and must print the token to stdout. Codex trims surrounding whitespace, treats an empty token as an error, and refreshes proactively at `refresh_interval_ms`; set `refresh_interval_ms = 0` to refresh only after an authentication retry. Don't combine `[model_providers.<id>.auth]` with `env_key`, `experimental_bearer_token`, or `requires_openai_auth`.

177 199 

200### Amazon Bedrock provider

201 

202Codex includes a built-in `amazon-bedrock` model provider. Set it directly as

203`model_provider`; unlike custom providers, this built-in provider supports only

204the nested AWS profile and region overrides.

205 

206```toml

207model_provider = "amazon-bedrock"

208model = "<bedrock-model-id>"

209 

210[model_providers.amazon-bedrock.aws]

211profile = "default"

212region = "eu-central-1"

213```

214 

215If you omit `profile`, Codex uses the standard AWS credential chain. Set

216`region` to the supported Bedrock region that should handle requests.

217 

178## OSS mode (local providers)218## OSS mode (local providers)

179 219 

180Codex can run against a local "open source" provider (for example, Ollama or LM Studio) when you pass `--oss`. If you pass `--oss` without specifying a provider, Codex uses `oss_provider` as the default.220Codex can run against a local "open source" provider (for example, Ollama or LM Studio) when you pass `--oss`. If you pass `--oss` without specifying a provider, Codex uses `oss_provider` as the default.


264"""304"""

265```305```

266 306 

307### Named permission profiles

308 

309Set `default_permissions` to reuse a sandbox profile by name. Codex includes

310the built-in profiles `:read-only`, `:workspace`, and `:danger-no-sandbox`:

311 

312```toml

313default_permissions = ":workspace"

314```

315 

316For custom profiles, point `default_permissions` at a name you define under

317`[permissions.<name>]`:

318 

319```toml

320default_permissions = "workspace"

321 

322[permissions.workspace.filesystem]

323":project_roots" = { "." = "write", "**/*.env" = "none" }

324glob_scan_max_depth = 3

325 

326[permissions.workspace.network]

327enabled = true

328mode = "limited"

329 

330[permissions.workspace.network.domains]

331"api.openai.com" = "allow"

332```

333 

334Use built-in names with a leading colon. Custom names don't use a leading

335colon and must have matching `permissions` tables.

336 

267Need the complete key list (including profile-scoped overrides and requirements constraints)? See [Configuration Reference](https://developers.openai.com/codex/config-reference) and [Managed configuration](https://developers.openai.com/codex/enterprise/managed-configuration).337Need the complete key list (including profile-scoped overrides and requirements constraints)? See [Configuration Reference](https://developers.openai.com/codex/config-reference) and [Managed configuration](https://developers.openai.com/codex/enterprise/managed-configuration).

268 338 

269In workspace-write mode, some environments keep `.git/` and `.codex/`339In workspace-write mode, some environments keep `.git/` and `.codex/`

270 read-only even when the rest of the workspace is writable. This is why340 read-only even when the rest of the workspace is writable. This is why

271 commands like `git commit` may still require approval to run outside the341 commands like `git commit` may still require approval to run outside the

272sandbox. If you want Codex to skip specific commands (for example, block `git commit` outside the sandbox), use342 sandbox. If you want Codex to skip specific commands (for example, block `git

273[rules](https://developers.openai.com/codex/rules).343 commit` outside the sandbox), use

344 <a href="/codex/rules">rules</a>.

274 345 

275Disable sandboxing entirely (use only if your environment already isolates processes):346Disable sandboxing entirely (use only if your environment already isolates processes):

276 347 


348Each metric below also includes default metadata tags: `auth_mode`, `originator`, `session_source`, `model`, and `app.version`.419Each metric below also includes default metadata tags: `auth_mode`, `originator`, `session_source`, `model`, and `app.version`.

349 420 

350| Metric | Type | Fields | Description |421| Metric | Type | Fields | Description |

351| --- | --- | --- | --- |422| ------------------------------------- | --------- | ------------------- | ----------------------------------------------------------------- |

352| `codex.api_request` | counter | `status`, `success` | API request count by HTTP status and success/failure. |423| `codex.api_request` | counter | `status`, `success` | API request count by HTTP status and success/failure. |

353| `codex.api_request.duration_ms` | histogram | `status`, `success` | API request duration in milliseconds. |424| `codex.api_request.duration_ms` | histogram | `status`, `success` | API request duration in milliseconds. |

354| `codex.sse_event` | counter | `kind`, `success` | SSE event count by event kind and success/failure. |425| `codex.sse_event` | counter | `kind`, `success` | SSE event count by event kind and success/failure. |


390#### Runtime and model transport461#### Runtime and model transport

391 462 

392| Metric | Type | Fields | Description |463| Metric | Type | Fields | Description |

393| --- | --- | --- | --- |464| ----------------------------------------------- | --------- | -------------------- | ------------------------------------------------------------ |

394| `api_request` | counter | `status`, `success` | API request count by HTTP status and success/failure. |465| `api_request` | counter | `status`, `success` | API request count by HTTP status and success/failure. |

395| `api_request.duration_ms` | histogram | `status`, `success` | API request duration in milliseconds. |466| `api_request.duration_ms` | histogram | `status`, `success` | API request duration in milliseconds. |

396| `sse_event` | counter | `kind`, `success` | SSE event count by event kind and success/failure. |467| `sse_event` | counter | `kind`, `success` | SSE event count by event kind and success/failure. |


399| `websocket.request.duration_ms` | histogram | `success` | WebSocket request duration in milliseconds. |470| `websocket.request.duration_ms` | histogram | `success` | WebSocket request duration in milliseconds. |

400| `websocket.event` | counter | `kind`, `success` | WebSocket message/event count by type and success/failure. |471| `websocket.event` | counter | `kind`, `success` | WebSocket message/event count by type and success/failure. |

401| `websocket.event.duration_ms` | histogram | `kind`, `success` | WebSocket message/event processing duration in milliseconds. |472| `websocket.event.duration_ms` | histogram | `kind`, `success` | WebSocket message/event processing duration in milliseconds. |

402| `responses_api_overhead.duration_ms` | histogram | | Responses API overhead timing from websocket responses. |473| `responses_api_overhead.duration_ms` | histogram | | Responses API overhead timing from WebSocket responses. |

403| `responses_api_inference_time.duration_ms` | histogram | | Responses API inference timing from websocket responses. |474| `responses_api_inference_time.duration_ms` | histogram | | Responses API inference timing from WebSocket responses. |

404| `responses_api_engine_iapi_ttft.duration_ms` | histogram | | Responses API engine IAPI time-to-first-token timing. |475| `responses_api_engine_iapi_ttft.duration_ms` | histogram | | Responses API engine IAPI time-to-first-token timing. |

405| `responses_api_engine_service_ttft.duration_ms` | histogram | | Responses API engine service time-to-first-token timing. |476| `responses_api_engine_service_ttft.duration_ms` | histogram | | Responses API engine service time-to-first-token timing. |

406| `responses_api_engine_iapi_tbt.duration_ms` | histogram | | Responses API engine IAPI time-between-token timing. |477| `responses_api_engine_iapi_tbt.duration_ms` | histogram | | Responses API engine IAPI time-between-token timing. |


420#### Turn and tool activity491#### Turn and tool activity

421 492 

422| Metric | Type | Fields | Description |493| Metric | Type | Fields | Description |

423| --- | --- | --- | --- |494| -------------------------------------- | --------- | ------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |

424| `turn.e2e_duration_ms` | histogram | | End-to-end time for a full turn. |495| `turn.e2e_duration_ms` | histogram | | End-to-end time for a full turn. |

425| `turn.ttft.duration_ms` | histogram | | Time to first token for a turn. |496| `turn.ttft.duration_ms` | histogram | | Time to first token for a turn. |

426| `turn.ttfm.duration_ms` | histogram | | Time to first model output item for a turn. |497| `turn.ttfm.duration_ms` | histogram | | Time to first model output item for a turn. |


435| `mcp.call` | counter | See note | MCP tool invocation result. |506| `mcp.call` | counter | See note | MCP tool invocation result. |

436| `mcp.call.duration_ms` | histogram | See note | MCP tool invocation duration. |507| `mcp.call.duration_ms` | histogram | See note | MCP tool invocation duration. |

437| `mcp.tools.list.duration_ms` | histogram | `cache` | MCP tool-list duration, including cache hit/miss state. |508| `mcp.tools.list.duration_ms` | histogram | `cache` | MCP tool-list duration, including cache hit/miss state. |

438| `mcp.tools.fetch_uncached.duration_ms` | histogram | | Duration of uncached MCP tool fetches. |509| `mcp.tools.fetch_uncached.duration_ms` | histogram | | Duration of MCP tool fetches that miss the cache. |

439| `mcp.tools.cache_write.duration_ms` | histogram | | Duration of Codex Apps MCP tool-cache writes. |510| `mcp.tools.cache_write.duration_ms` | histogram | | Duration of Codex Apps MCP tool-cache writes. |

440| `hooks.run` | counter | `hook_name`, `source`, `status` | Hook run count by hook name, source, and status. |511| `hooks.run` | counter | `hook_name`, `source`, `status` | Hook run count by hook name, source, and status. |

441| `hooks.run.duration_ms` | histogram | `hook_name`, `source`, `status` | Hook run duration in milliseconds. |512| `hooks.run.duration_ms` | histogram | `hook_name`, `source`, `status` | Hook run duration in milliseconds. |


445#### Threads, tasks, and features516#### Threads, tasks, and features

446 517 

447| Metric | Type | Fields | Description |518| Metric | Type | Fields | Description |

448| --- | --- | --- | --- |519| --------------------------------- | --------- | --------------------- | -------------------------------------------------------------------------------- |

449| `feature.state` | counter | `feature`, `value` | Feature values that differ from defaults (emit one row per non-default). |520| `feature.state` | counter | `feature`, `value` | Feature values that differ from defaults (emit one row per non-default). |

450| `status_line` | counter | | Session started with a configured status line. |521| `status_line` | counter | | Session started with a configured status line. |

451| `model_warning` | counter | | Warning sent to the model. |522| `model_warning` | counter | | Warning sent to the model. |


475#### Memory and local state546#### Memory and local state

476 547 

477| Metric | Type | Fields | Description |548| Metric | Type | Fields | Description |

478| --- | --- | --- | --- |549| ------------------------------ | --------- | ------------------------- | --------------------------------------------------------- |

479| `memory.phase1` | counter | `status` | Memory phase 1 job counts by status. |550| `memory.phase1` | counter | `status` | Memory phase 1 job counts by status. |

480| `memory.phase1.e2e_ms` | histogram | | End-to-end duration for memory phase 1. |551| `memory.phase1.e2e_ms` | histogram | | End-to-end duration for memory phase 1. |

481| `memory.phase1.output` | counter | | Memory phase 1 outputs written. |552| `memory.phase1.output` | counter | | Memory phase 1 outputs written. |


496#### Windows sandbox567#### Windows sandbox

497 568 

498| Metric | Type | Fields | Description |569| Metric | Type | Fields | Description |

499| --- | --- | --- | --- |570| ------------------------------------------------ | --------- | ----------------------------------------- | ----------------------------------------------------- |

500| `windows_sandbox.setup_success` | counter | `originator`, `mode` | Windows sandbox setup successes. |571| `windows_sandbox.setup_success` | counter | `originator`, `mode` | Windows sandbox setup successes. |

501| `windows_sandbox.setup_failure` | counter | `originator`, `mode` | Windows sandbox setup failures. |572| `windows_sandbox.setup_failure` | counter | `originator`, `mode` | Windows sandbox setup failures. |

502| `windows_sandbox.setup_duration_ms` | histogram | `result`, `originator`, `mode` | Windows sandbox setup duration. |573| `windows_sandbox.setup_duration_ms` | histogram | `result`, `originator`, `mode` | Windows sandbox setup duration. |