SpyBara
Go Premium Account
2026
13 Apr 2026, 18:37
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
12 May 2026, 01:59
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

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.

Command line options

export const globalFlagOptions = [ { key: "PROMPT", type: "string", description: "Optional text instruction to start the session. Omit to launch the TUI without a pre-filled message.", }, { key: "--image, -i", type: "path[,path...]", description: "Attach one or more image files to the initial prompt. Separate multiple paths with commas or repeat the flag.", }, { key: "--model, -m", type: "string", description: "Override the model set in configuration (for example gpt-5.4).", }, { key: "--oss", type: "boolean", defaultValue: "false", description: 'Use the local open source model provider (equivalent to -c model_provider="oss"). Validates that Ollama is running.', }, { key: "--profile, -p", type: "string", description: "Configuration profile name to load from ~/.codex/config.toml.", }, { key: "--sandbox, -s", type: "read-only | workspace-write | danger-full-access", description: "Select the sandbox policy for model-generated shell commands.", }, { key: "--ask-for-approval, -a", type: "untrusted | on-request | never", description: "Control when Codex pauses for human approval before running a command. on-failure is deprecated; prefer on-request for interactive runs or never for non-interactive runs.", }, { key: "--dangerously-bypass-approvals-and-sandbox, --yolo", type: "boolean", defaultValue: "false", description: "Run every command without approvals or sandboxing. Only use inside an externally hardened environment.", }, { key: "--cd, -C", type: "path", description: "Set the working directory for the agent before it starts processing your request.", }, { key: "--search", type: "boolean", defaultValue: "false", description: 'Enable live web search (sets web_search = "live" instead of the default "cached").', }, { key: "--add-dir", type: "path", description: "Grant additional directories write access alongside the main workspace. Repeat for multiple paths.", }, { key: "--no-alt-screen", type: "boolean", defaultValue: "false", description: "Disable alternate screen mode for the TUI (overrides tui.alternate_screen for this run).", }, { key: "--remote", type: "ws://host:port | wss://host:port", description: "Connect the interactive TUI to a remote app-server WebSocket endpoint. Supported for codex, codex resume, and codex fork; other subcommands reject remote mode.", }, { key: "--remote-auth-token-env", type: "ENV_VAR", description: "Read a bearer token from this environment variable and send it when connecting with --remote. Requires --remote; tokens are only sent over wss:// URLs or ws:// URLs whose host is localhost, 127.0.0.1, or ::1.", }, { key: "--enable", type: "feature", description: "Force-enable a feature flag (translates to -c features.<name>=true). Repeatable.", }, { key: "--disable", type: "feature", description: "Force-disable a feature flag (translates to -c features.<name>=false). Repeatable.", }, { key: "--config, -c", type: "key=value", description: "Override configuration values. Values parse as JSON if possible; otherwise the literal string is used.", }, ];

export const commandOverview = [ { key: "codex", href: "/codex/cli/reference#codex-interactive", type: "stable", description: "Launch the terminal UI. Accepts the global flags above plus an optional prompt or image attachments.", }, { key: "codex app-server", href: "/codex/cli/reference#codex-app-server", type: "experimental", description: "Launch the Codex app server for local development or debugging.", }, { key: "codex app", href: "/codex/cli/reference#codex-app", type: "stable", description: "Launch the Codex desktop app on macOS or Windows. On macOS, Codex can open a workspace path; on Windows, Codex prints the path to open.", }, { key: "codex debug app-server send-message-v2", href: "/codex/cli/reference#codex-debug-app-server-send-message-v2", type: "experimental", description: "Debug app-server by sending a single V2 message through the built-in test client.", }, { key: "codex debug models", href: "/codex/cli/reference#codex-debug-models", type: "experimental", description: "Print the raw model catalog Codex sees, including an option to inspect only the bundled catalog.", }, { key: "codex apply", href: "/codex/cli/reference#codex-apply", type: "stable", description: "Apply the latest diff generated by a Codex Cloud task to your local working tree. Alias: codex a.", }, { key: "codex cloud", href: "/codex/cli/reference#codex-cloud", type: "experimental", description: "Browse or execute Codex Cloud tasks from the terminal without opening the TUI. Alias: codex cloud-tasks.", }, { key: "codex completion", href: "/codex/cli/reference#codex-completion", type: "stable", description: "Generate shell completion scripts for Bash, Zsh, Fish, or PowerShell.", }, { key: "codex features", href: "/codex/cli/reference#codex-features", type: "stable", description: "List feature flags and persistently enable or disable them in config.toml.", }, { key: "codex exec", href: "/codex/cli/reference#codex-exec", type: "stable", description: "Run Codex non-interactively. Alias: codex e. Stream results to stdout or JSONL and optionally resume previous sessions.", }, { key: "codex execpolicy", href: "/codex/cli/reference#codex-execpolicy", type: "experimental", description: "Evaluate execpolicy rule files and see whether a command would be allowed, prompted, or blocked.", }, { key: "codex login", href: "/codex/cli/reference#codex-login", type: "stable", description: "Authenticate Codex using ChatGPT OAuth, device auth, or an API key piped over stdin.", }, { key: "codex logout", href: "/codex/cli/reference#codex-logout", type: "stable", description: "Remove stored authentication credentials.", }, { key: "codex mcp", href: "/codex/cli/reference#codex-mcp", type: "experimental", description: "Manage Model Context Protocol servers (list, add, remove, authenticate).", }, { key: "codex plugin marketplace", href: "/codex/cli/reference#codex-plugin-marketplace", type: "experimental", description: "Add, upgrade, or remove plugin marketplaces from Git or local sources.", }, { key: "codex mcp-server", href: "/codex/cli/reference#codex-mcp-server", type: "experimental", description: "Run Codex itself as an MCP server over stdio. Useful when another agent consumes Codex.", }, { key: "codex resume", href: "/codex/cli/reference#codex-resume", type: "stable", description: "Continue a previous interactive session by ID or resume the most recent conversation.", }, { key: "codex fork", href: "/codex/cli/reference#codex-fork", type: "stable", description: "Fork a previous interactive session into a new thread, preserving the original transcript.", }, { key: "codex sandbox", href: "/codex/cli/reference#codex-sandbox", type: "experimental", description: "Run arbitrary commands inside Codex-provided macOS, Linux, or Windows sandboxes.", }, { key: "codex update", href: "/codex/cli/reference#codex-update", type: "stable", description: "Check for and apply a Codex CLI update when the installed release supports self-update.", }, ];

export const execOptions = [ { key: "PROMPT", type: "string | - (read stdin)", description: "Initial instruction for the task. Use - to pipe the prompt from stdin.", }, { key: "--image, -i", type: "path[,path...]", description: "Attach images to the first message. Repeatable; supports comma-separated lists.", }, { key: "--model, -m", type: "string", description: "Override the configured model for this run.", }, { key: "--oss", type: "boolean", defaultValue: "false", description: "Use the local open source provider (requires a running Ollama instance).", }, { key: "--sandbox, -s", type: "read-only | workspace-write | danger-full-access", description: "Sandbox policy for model-generated commands. Defaults to configuration.", }, { key: "--profile, -p", type: "string", description: "Select a configuration profile defined in config.toml.", }, { key: "--full-auto", type: "boolean", defaultValue: "false", description: "Deprecated compatibility flag. Prefer --sandbox workspace-write; Codex prints a warning when this flag is used.", }, { key: "--dangerously-bypass-approvals-and-sandbox, --yolo", type: "boolean", defaultValue: "false", description: "Bypass approval prompts and sandboxing. Dangerous—only use inside an isolated runner.", }, { key: "--cd, -C", type: "path", description: "Set the workspace root before executing the task.", }, { key: "--skip-git-repo-check", type: "boolean", defaultValue: "false", description: "Allow running outside a Git repository (useful for one-off directories).", }, { key: "--ephemeral", type: "boolean", defaultValue: "false", description: "Run without persisting session rollout files to disk.", }, { key: "--ignore-user-config", type: "boolean", defaultValue: "false", description: "Do not load $CODEX_HOME/config.toml. Authentication still uses CODEX_HOME.", }, { key: "--ignore-rules", type: "boolean", defaultValue: "false", description: "Do not load user or project execpolicy .rules files for this run.", }, { key: "--output-schema", type: "path", description: "JSON Schema file describing the expected final response shape. Codex validates tool output against it.", }, { key: "--color", type: "always | never | auto", defaultValue: "auto", description: "Control ANSI color in stdout.", }, { key: "--json, --experimental-json", type: "boolean", defaultValue: "false", description: "Print newline-delimited JSON events instead of formatted text.", }, { key: "--output-last-message, -o", type: "path", description: "Write the assistant’s final message to a file. Useful for downstream scripting.", }, { key: "Resume subcommand", type: "codex exec resume [SESSION_ID]", description: "Resume an exec session by ID or add --last to continue the most recent session from the current working directory. Add --all to consider sessions from any directory. Accepts an optional follow-up prompt.", }, { key: "-c, --config", type: "key=value", description: "Inline configuration override for the non-interactive run (repeatable).", }, ];

export const appServerOptions = [ { key: "--listen", type: "stdio:// | ws://IP:PORT", defaultValue: "stdio://", description: "Transport listener URL. Use ws://IP:PORT to expose a WebSocket endpoint for remote clients.", }, { key: "--ws-auth", type: "capability-token | signed-bearer-token", description: "Authentication mode for app-server WebSocket clients. If omitted, WebSocket auth is disabled; non-local listeners warn during startup.", }, { key: "--ws-token-file", type: "absolute path", description: "File containing the shared capability token. Required with --ws-auth capability-token.", }, { key: "--ws-shared-secret-file", type: "absolute path", description: "File containing the HMAC shared secret used to validate signed JWT bearer tokens. Required with --ws-auth signed-bearer-token.", }, { key: "--ws-issuer", type: "string", description: "Expected iss claim for signed bearer tokens. Requires --ws-auth signed-bearer-token.", }, { key: "--ws-audience", type: "string", description: "Expected aud claim for signed bearer tokens. Requires --ws-auth signed-bearer-token.", }, { key: "--ws-max-clock-skew-seconds", type: "number", defaultValue: "30", description: "Clock skew allowance when validating signed bearer token exp and nbf claims. Requires --ws-auth signed-bearer-token.", }, ];

export const appOptions = [ { key: "PATH", type: "path", defaultValue: ".", description: "Workspace path for Codex Desktop. On macOS, Codex opens this path; on Windows, Codex prints the path.", }, { key: "--download-url", type: "url", description: "Advanced override for the Codex desktop installer URL used during install.", }, ];

export const debugAppServerSendMessageV2Options = [ { key: "USER_MESSAGE", type: "string", description: "Message text sent to app-server through the built-in V2 test-client flow.", }, ];

export const debugModelsOptions = [ { key: "--bundled", type: "boolean", defaultValue: "false", description: "Skip refresh and print only the model catalog bundled with the current Codex binary.", }, ];

export const resumeOptions = [ { key: "SESSION_ID", type: "uuid", description: "Resume the specified session. Omit and use --last to continue the most recent session.", }, { key: "--last", type: "boolean", defaultValue: "false", description: "Skip the picker and resume the most recent conversation from the current working directory.", }, { key: "--all", type: "boolean", defaultValue: "false", description: "Include sessions outside the current working directory when selecting the most recent session.", }, ];

export const featuresOptions = [ { key: "List subcommand", type: "codex features list", description: "Show known feature flags, their maturity stage, and their effective state.", }, { key: "Enable subcommand", type: "codex features enable ", description: "Persistently enable a feature flag in config.toml. Respects the active --profile when provided.", }, { key: "Disable subcommand", type: "codex features disable ", description: "Persistently disable a feature flag in config.toml. Respects the active --profile when provided.", }, ];

export const execResumeOptions = [ { key: "SESSION_ID", type: "uuid", description: "Resume the specified session. Omit and use --last to continue the most recent session.", }, { key: "--last", type: "boolean", defaultValue: "false", description: "Resume the most recent conversation from the current working directory.", }, { key: "--all", type: "boolean", defaultValue: "false", description: "Include sessions outside the current working directory when selecting the most recent session.", }, { key: "--image, -i", type: "path[,path...]", description: "Attach one or more images to the follow-up prompt. Separate multiple paths with commas or repeat the flag.", }, { key: "PROMPT", type: "string | - (read stdin)", description: "Optional follow-up instruction sent immediately after resuming.", }, ];

export const forkOptions = [ { key: "SESSION_ID", type: "uuid", description: "Fork the specified session. Omit and use --last to fork the most recent session.", }, { key: "--last", type: "boolean", defaultValue: "false", description: "Skip the picker and fork the most recent conversation automatically.", }, { key: "--all", type: "boolean", defaultValue: "false", description: "Show sessions beyond the current working directory in the picker.", }, ];

export const execpolicyOptions = [ { key: "--rules, -r", type: "path (repeatable)", description: "Path to an execpolicy rule file to evaluate. Provide multiple flags to combine rules across files.", }, { key: "--pretty", type: "boolean", defaultValue: "false", description: "Pretty-print the JSON result.", }, { key: "COMMAND...", type: "var-args", description: "Command to be checked against the specified policies.", }, ];

export const loginOptions = [ { key: "--with-api-key", type: "boolean", description: "Read an API key from stdin (for example printenv OPENAI_API_KEY | codex login --with-api-key).", }, { key: "--device-auth", type: "boolean", description: "Use OAuth device code flow instead of launching a browser window.", }, { key: "status subcommand", type: "codex login status", description: "Print the active authentication mode and exit with 0 when logged in.", }, ];

export const applyOptions = [ { key: "TASK_ID", type: "string", description: "Identifier of the Codex Cloud task whose diff should be applied.", }, ];

export const sandboxMacOptions = [ { key: "--permissions-profile", type: "NAME", description: "Apply a named permissions profile from the active configuration stack.", }, { key: "--cd, -C", type: "DIR", description: "Working directory used for profile resolution and command execution. Requires --permissions-profile.", }, { key: "--include-managed-config", type: "boolean", defaultValue: "false", description: "Include managed requirements while resolving an explicit permissions profile. Requires --permissions-profile.", }, { key: "--allow-unix-socket", type: "path", description: "Allow the sandboxed command to bind or connect Unix sockets rooted at this path. Repeat to allow multiple paths.", }, { key: "--log-denials", type: "boolean", defaultValue: "false", description: "Capture macOS sandbox denials with log stream while the command runs and print them after exit.", }, { key: "--config, -c", type: "key=value", description: "Pass configuration overrides into the sandboxed run (repeatable).", }, { key: "COMMAND...", type: "var-args", description: "Shell command to execute under macOS Seatbelt. Everything after -- is forwarded.", }, ];

export const sandboxLinuxOptions = [ { key: "--permissions-profile", type: "NAME", description: "Apply a named permissions profile from the active configuration stack.", }, { key: "--cd, -C", type: "DIR", description: "Working directory used for profile resolution and command execution. Requires --permissions-profile.", }, { key: "--include-managed-config", type: "boolean", defaultValue: "false", description: "Include managed requirements while resolving an explicit permissions profile. Requires --permissions-profile.", }, { key: "--config, -c", type: "key=value", description: "Configuration overrides applied before launching the sandbox (repeatable).", }, { key: "COMMAND...", type: "var-args", description: "Command to execute under Landlock + seccomp. Provide the executable after --.", }, ];

export const sandboxWindowsOptions = [ { key: "--permissions-profile", type: "NAME", description: "Apply a named permissions profile from the active configuration stack.", }, { key: "--cd, -C", type: "DIR", description: "Working directory used for profile resolution and command execution. Requires --permissions-profile.", }, { key: "--include-managed-config", type: "boolean", defaultValue: "false", description: "Include managed requirements while resolving an explicit permissions profile. Requires --permissions-profile.", }, { key: "--config, -c", type: "key=value", description: "Configuration overrides applied before launching the sandbox (repeatable).", }, { key: "COMMAND...", type: "var-args", description: "Command to execute under the native Windows sandbox. Provide the executable after --.", }, ];

export const completionOptions = [ { key: "SHELL", type: "bash | zsh | fish | power-shell | elvish", defaultValue: "bash", description: "Shell to generate completions for. Output prints to stdout.", }, ];

export const cloudExecOptions = [ { key: "QUERY", type: "string", description: "Task prompt. If omitted, Codex prompts interactively for details.", }, { key: "--env", type: "ENV_ID", description: "Target Codex Cloud environment identifier (required). Use codex cloud to list options.", }, { key: "--attempts", type: "1-4", defaultValue: "1", description: "Number of assistant attempts (best-of-N) Codex Cloud should run.", }, ];

export const cloudListOptions = [ { key: "--env", type: "ENV_ID", description: "Filter tasks by environment identifier.", }, { key: "--limit", type: "1-20", defaultValue: "20", description: "Maximum number of tasks to return.", }, { key: "--cursor", type: "string", description: "Pagination cursor returned by a previous request.", }, { key: "--json", type: "boolean", defaultValue: "false", description: "Emit machine-readable JSON instead of plain text.", }, ];

export const mcpCommands = [ { key: "list", type: "--json", description: "List configured MCP servers. Add --json for machine-readable output.", }, { key: "get ", type: "--json", description: "Show a specific server configuration. --json prints the raw config entry.", }, { key: "add ", type: "-- <command...> | --url ", description: "Register a server using a stdio launcher command or a streamable HTTP URL. Supports --env KEY=VALUE for stdio transports.", }, { key: "remove ", description: "Delete a stored MCP server definition.", }, { key: "login ", type: "--scopes scope1,scope2", description: "Start an OAuth login for a streamable HTTP server (servers that support OAuth only).", }, { key: "logout ", description: "Remove stored OAuth credentials for a streamable HTTP server.", }, ];

export const mcpAddOptions = [ { key: "COMMAND...", type: "stdio transport", description: "Executable plus arguments to launch the MCP server. Provide after --.", }, { key: "--env KEY=VALUE", type: "repeatable", description: "Environment variable assignments applied when launching a stdio server.", }, { key: "--url", type: "https://…", description: "Register a streamable HTTP server instead of stdio. Mutually exclusive with COMMAND....", }, { key: "--bearer-token-env-var", type: "ENV_VAR", description: "Environment variable whose value is sent as a bearer token when connecting to a streamable HTTP server.", }, ];

export const marketplaceCommands = [ { key: "add ", type: "[--ref REF] [--sparse PATH]", description: "Install a plugin marketplace from GitHub shorthand, a Git URL, an SSH URL, or a local marketplace root directory. --sparse is supported only for Git sources and can be repeated.", }, { key: "upgrade [marketplace-name]", description: "Refresh one configured Git marketplace, or all configured Git marketplaces when no name is provided.", }, { key: "remove ", description: "Remove a configured plugin marketplace.", }, ];

How to read this reference

This page catalogs every documented Codex CLI command and flag. Use the interactive tables to search by key or description. Each section indicates whether the option is stable or experimental and calls out risky combinations.

The CLI inherits most defaults from ~/.codex/config.toml. Any -c key=value overrides you pass at the command line take precedence for that invocation. See Config basics for more information.

Global flags

These options apply to the base codex command and propagate to each subcommand unless a section below specifies otherwise. When you run a subcommand, place global flags after it (for example, codex exec --oss ...) so Codex applies them as intended.

Command overview

The Maturity column uses feature maturity labels such as Experimental, Beta, and Stable. See Feature Maturity for how to interpret these labels.

<ConfigTable client:load options={commandOverview} secondColumnTitle="Maturity" secondColumnVariant="maturity" />

Command details

codex (interactive)

Running codex with no subcommand launches the interactive terminal UI (TUI). The agent accepts the global flags above plus image attachments. Web search defaults to cached mode; use --search to switch to live browsing. For low-friction local work, use --sandbox workspace-write --ask-for-approval on-request.

Use --remote ws://host:port or --remote wss://host:port to connect the TUI to an app server started with codex app-server --listen ws://IP:PORT. Add --remote-auth-token-env <ENV_VAR> when the server requires a bearer token for WebSocket authentication. See Codex CLI features for setup examples and authentication guidance.

codex app-server

Launch the Codex app server locally. This is primarily for development and debugging and may change without notice.

codex app-server --listen stdio:// keeps the default JSONL-over-stdio behavior. --listen ws://IP:PORT enables WebSocket transport for app-server clients. The server accepts ws:// listen URLs; use TLS termination or a secure proxy when clients connect with wss://. If you generate schemas for client bindings, add --experimental to include gated fields and methods.

codex app

Launch Codex Desktop from the terminal on macOS or Windows. On macOS, Codex can open a specific workspace path; on Windows, Codex prints the path to open.

codex app opens an installed Codex Desktop app, or starts the installer when the app is missing. On macOS, Codex opens the provided workspace path; on Windows, it prints the path to open after installation.

codex debug app-server send-message-v2

Send one message through app-server's V2 thread/turn flow using the built-in app-server test client.

This debug flow initializes with experimentalApi: true, starts a thread, sends a turn, and streams server notifications. Use it to reproduce and inspect app-server protocol behavior locally.

codex debug models

Print the raw model catalog Codex sees as JSON.

Use --bundled when you want to inspect only the catalog bundled with the current binary, without refreshing from the remote models endpoint.

codex apply

Apply the most recent diff from a Codex cloud task to your local repository. You must authenticate and have access to the task.

Codex prints the patched files and exits non-zero if git apply fails (for example, due to conflicts).

codex cloud

Interact with Codex cloud tasks from the terminal. The default command opens an interactive picker; codex cloud exec submits a task directly, and codex cloud list returns recent tasks for scripting or quick inspection.

Authentication follows the same credentials as the main CLI. Codex exits non-zero if the task submission fails.

codex cloud list

List recent cloud tasks with optional filtering and pagination.

Plain-text output prints a task URL followed by status details. Use --json for automation. The JSON payload contains a tasks array plus an optional cursor value. Each task includes id, url, title, status, updated_at, environment_id, environment_label, summary, is_review, and attempt_total.

codex completion

Generate shell completion scripts and redirect the output to the appropriate location, for example codex completion zsh > "${fpath[1]}/_codex".

codex features

Manage feature flags stored in ~/.codex/config.toml. The enable and disable commands persist changes so they apply to future sessions. When you launch with --profile, Codex writes to that profile instead of the root configuration.

codex exec

Use codex exec (or the short form codex e) for scripted or CI-style runs that should finish without human interaction.

Codex writes formatted output by default. Add --json to receive newline-delimited JSON events (one per state change). The optional resume subcommand lets you continue non-interactive tasks. Use --last to pick the most recent session from the current working directory, or add --all to search across all sessions:

codex execpolicy

Check execpolicy rule files before you save them. codex execpolicy check accepts one or more --rules flags (for example, files under ~/.codex/rules) and emits JSON showing the strictest decision and any matching rules. Add --pretty to format the output. The execpolicy command is currently in preview.

codex login

Authenticate the CLI with a ChatGPT account or API key. With no flags, Codex opens a browser for the ChatGPT OAuth flow.

codex login status exits with 0 when credentials are present, which is helpful in automation scripts.

codex logout

Remove saved credentials for both API key and ChatGPT authentication. This command has no flags.

codex mcp

Manage Model Context Protocol server entries stored in ~/.codex/config.toml.

The add subcommand supports both stdio and streamable HTTP transports:

OAuth actions (login, logout) only work with streamable HTTP servers (and only when the server supports OAuth).

codex plugin marketplace

Manage plugin marketplace sources that Codex can browse and install from.

codex plugin marketplace add accepts GitHub shorthand such as owner/repo or owner/repo@ref, HTTP or HTTPS Git URLs, SSH Git URLs, and local marketplace root directories. Use --ref to pin a Git ref, and repeat --sparse PATH to use a sparse checkout for Git-backed marketplace repositories.

codex mcp-server

Run Codex as an MCP server over stdio so that other tools can connect. This command inherits global configuration overrides and exits when the downstream client closes the connection.

codex resume

Continue an interactive session by ID or resume the most recent conversation. codex resume scopes --last to the current working directory unless you pass --all. It accepts the same global flags as codex, including model and sandbox overrides.

codex fork

Fork a previous interactive session into a new thread. By default, codex fork opens the session picker; add --last to fork your most recent session instead.

codex sandbox

Use the sandbox helper to run a command under the same policies Codex uses internally.

macOS seatbelt

Linux Landlock

Windows

codex update

Check for and apply a Codex CLI update when the installed release supports self-update. Debug builds print a message telling you to install a release build instead.

Flag combinations and safety tips

  • Use --sandbox workspace-write for unattended local work that can stay inside the workspace, and avoid --dangerously-bypass-approvals-and-sandbox unless you are inside a dedicated sandbox VM.
  • When you need to grant Codex write access to more directories, prefer --add-dir rather than forcing --sandbox danger-full-access.
  • Pair --json with --output-last-message in CI to capture machine-readable progress and a final natural-language summary.