6.7 KiB
Configuration
Codex receives a generated global AGENTS.md, agent TOML files, skills, rule files, and a config.toml adapter. It sets workspace sandboxing with network access for shell commands (so MCPorter calls such as Context7 work without approval), automatic approval review, agents.enabled = true, agents.max_concurrent_threads_per_session = 5, and agents.max_depth = 1. Claude Code receives a generated global CLAUDE.md, agent Markdown files, skills, and settings.json with auto permissions, explicit Agent and mcporter call context7.* shell permissions, mcp.context7.com as the only allowed sandbox domain where the Claude sandbox is enabled, a five-operation concurrency default, at most five concurrent subagents (CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS), and a subagent spawn depth of one (CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH), so subagents cannot start further subagents. Installation resolves user paths at runtime; the repository contains no machine-specific paths.
Both clients embed shared/rules/general.md and the rule-loading conditions from shared/global-instructions.md. Rules for languages and frameworks live in their own directories, with an index.md entry point and focused Markdown rules under references/. Security has its own directory with a baseline entry point and focused rules for authentication, web, APIs, data, files, network, cryptography, and supply chains. Git, Microsoft, and cross-cutting rules remain directly under shared/rules/. Codex receives the full directory tree; Claude generates a skill for each rule and copies supporting references alongside the index skill.
The Codex adapter sets agents.max_depth = 1 and does not enable features.multi_agent_v2. Shared instructions also prohibit subagents from creating further subagents. Agent roles are optional, not stages that every task must run.
The build parses TOML with Python's standard-library tomllib, validates the emitted Claude settings shape, and uses codex --strict-config against an isolated generated configuration when Codex is available. This rejects malformed and unknown Codex configuration keys for the installed CLI version.
Client settings remain thin adapters. Shared semantics remain in shared/. User plugins are managed separately through adapters/plugins.tsv and client-native installation commands.
Permission defaults
Codex sets approval_policy = "on-request", approvals_reviewer = "auto_review", and sandbox_mode = "workspace-write". Eligible approval requests go through automatic review. Claude sets permissions.defaultMode = "auto" and shell-specific deny rules. Its sandbox is enabled on supported macOS, Linux, and WSL2 environments and disabled where unavailable, including native Windows. These are generated defaults, not a guarantee that a running session, account policy, or explicit launch override uses the same mode.
On native Windows, the Codex adapter selects windows.sandbox = "elevated", the recommended Windows sandbox. Its setup may require administrator approval; sandboxed commands run as dedicated lower-privilege users. The previous unelevated default reproduced spawnSync git EPERM when QMD's Node wrapper captured child-process output through pipes. The configuration change preserves workspace boundaries, network settings, and automatic approval review. Apply the generated configuration through the normal update process, complete Codex's sandbox setup if prompted, and start a new session. Verify semantic search there; package validation cannot establish runtime pipe compatibility. Use unelevated only as an explicit local fallback when elevated setup is unavailable, with that compatibility limitation in mind.
Status displays
Codex's native tui.status_line contains model, reasoning, fast-mode, approval-mode, five-hour-limit, weekly-limit, project-name, git-branch, context-window-size, context-used, and used-tokens, in that order. fast-mode shows Fast on or Fast off for supported models; it does not change the selected mode. five-hour-limit and weekly-limit show remaining usage in the primary and secondary quota windows, typically five hours and one week, and are omitted when Codex has no quota data. approval-mode reports the active command review mode. Rendering and colors are controlled by Codex; the adapter does not define custom colors per field. These native fields are supported by Codex 0.161.0.
Claude runs shared/statusline/statusline.ps1 for PowerShell or statusline.sh for Bash. Its two-line display is:
Opus · Review auto · Effort high · MyRepo @ main
Ctx 200k · Used 42% · Tokens 16.7k
Model and context-window size are cyan, effort and cumulative tokens magenta, repository blue, and branch green. Context usage is green below 60%, yellow from 60%, and red from 85%, using the rounded displayed percentage. A nonempty NO_COLOR disables ANSI colors. The Bash implementation requires jq.
Ctx is the context-window capacity; Used is the reported percentage occupied. Tokens adds the session's reported total input and output tokens, not just the current context. Counts use k and M suffixes. Missing model, effort, context size, or percentage is shown as -; missing token totals start at zero. Repository names fall back to the Git root or current directory; unavailable branches show -.
Claude's status line displays permission_mode or permissionMode when Claude provides it, and otherwise shows the configured auto review mode.
Verification and installation
The agent chooses the smallest sufficient checks based on behavior, affected callers, risk, reversibility, and uncertainty. Inspection can suffice for a small change. Full builds, broad test suites, and independent reviews are not automatic; explicit user and project requirements remain binding.
Delegation and long-running state use the shared orchestration rule, loaded on demand as a Codex rule or Claude skill. The coordinator owns decisions and routes concise evidence-based handoffs. Review and execution verification have separate responsibilities; see Agents.
Rebuild packages after changes to shared definitions or adapters. Generated defaults reach a user's configuration only through installation or update. Updates merge Codex's setup-owned root keys and table fields while retaining other root keys, extra fields in managed tables, plugin and marketplace tables, other unmanaged tables such as mcp_servers and model_providers, and unowned array tables. Claude settings retain unrelated keys and hooks. See the README for overwrite and backup behavior.