Codex CLI¶
Harness compatibility
Last verified: 2026-04-13
Docs: developers.openai.com/codex
Stale? File an issue.
Config surface¶
3 config scopes: user (~/.config/codex/config.toml), project (config.toml), system. Named profiles supported. Rules: .codex/rules/*.rules (Starlark). Agents: AGENTS.md, .codex/agents/*.toml. Hooks: .codex/hooks.json. Skills: .agents/skills/*/SKILL.md.
Sources: Config reference · Config basic · Config advanced · Rules · Security · MCP · Hooks · Skills · Subagents
Output files¶
| theta operation | Output | Format |
|---|---|---|
| Cast agent config | config.toml |
TOML |
| Cast instructions | AGENTS.md |
Markdown |
| Cast subagents | .codex/agents/<name>.toml |
TOML |
| Cast skills | .agents/skills/<name>/SKILL.md (default) or .codex/skills/<name>/SKILL.md (when [harness.codex].codex_specific_skills = true) |
Markdown |
| Cast harness config | config.toml (merged) |
TOML |
Casting notes¶
- Natively reads
AGENTS.md— no rename needed. exec_policyis written as a string path value inconfig.toml, not generated as a.rulesfile.- Supports
model_reasoning_effortnatively with extended enum:minimal,low,medium,high,xhigh.
Harness-specific config¶
[harness.codex] field |
Cast target | Notes |
|---|---|---|
sandbox_mode |
config.toml --> sandbox_mode |
"read-only" | "workspace-write" | "danger-full-access" — protected paths: .git, .agents, .codex |
approval_policy |
config.toml --> approval_policy |
"untrusted" | "on-request" | "never" | granular table |
web_search |
config.toml --> web_search |
"disabled" | "cached" (default) | "live" |
personality |
config.toml --> personality |
"none" | "friendly" | "pragmatic" |
model_reasoning_effort |
config.toml --> model_reasoning_effort |
Extends portable enum with "minimal" and "xhigh" |
exec_policy |
config.toml --> exec_policy |
Path to Starlark exec policy file |
features |
config.toml --> [features] |
Feature flags: multi_agent, undo, shell_snapshot, web_search, apps, etc |
sandbox_workspace_write |
config.toml --> [sandbox_workspace_write] |
network_access, writable_roots, exclude_tmpdir_env_var, exclude_slash_tmp |
model_providers |
config.toml --> [model_providers] |
Custom providers: name, base_url, env_key, wire_api, supports_websockets, auth |
codex_specific_skills |
— | When true, cast writes skills to .codex/skills/<name>/SKILL.md. Default false (writes to .agents/skills/<name>/SKILL.md, which Codex CLI also discovers natively) |
version |
— | Semver range constraint — cast warns if installed version is outside range |
agents, tui, history, analytics, otel, shell_environment_policy, profiles, projects, and auth fields pass through without validation.
Known limitations¶
- No configurable compaction — always auto.
- Named profiles (
[profiles.<name>]) are harness-specific and not portable. - Web search modes have no portable equivalent.
theta CLI
theta cast to codex-cli --notes and theta cast from codex-cli --notes print the full list of known cast limitations.