codex-cli
Codex CLI Skill
OpenAI Codex CLI (@openai/codex) is a lightweight, open-source AI coding agent that runs locally in the terminal. It can read, edit, and execute code in your project directory using GPT-5 models.
Quick Reference
Installation
npm install -g @openai/codex
# Authenticate (browser or API key)
codex # launches TUI with browser auth
export OPENAI_API_KEY="sk-..." # or use API key
Basic Usage
codex # Interactive TUI
codex "Fix the TypeScript errors" # TUI with pre-filled prompt
codex exec "Run tests and fix failures" # Non-interactive (CI/scripts)
codex e "Update CHANGELOG" # Short alias for exec
Core Concepts
Approval Modes (-a / --ask-for-approval)
Controls when Codex pauses to ask before executing. The ONLY valid values are:
| Mode | Flag | Config value | Behavior |
|---|---|---|---|
untrusted |
-a untrusted |
approval_policy = "untrusted" |
Max caution — approves almost everything |
on-request |
-a on-request |
approval_policy = "on-request" |
Asks on sensitive actions (default for auto) |
never |
-a never |
approval_policy = "never" |
Never asks — runs fully automated |
reject |
-a reject |
approval_policy = "reject" |
Blocks all tool use |
Note: --full-auto is a CLI-only shortcut (equivalent to -a on-request -s workspace-write). It is NOT a valid approval_policy config value. Values like "suggest", "auto-edit", or "full-auto" do not exist as config values.
Sandbox Modes (-s / --sandbox)
Controls filesystem and network access. The ONLY valid values are:
| Mode | Flag | Access |
|---|---|---|
read-only |
-s read-only |
Read files only, no writes |
workspace-write |
-s workspace-write |
Write within working directory only |
danger-full-access |
-s danger-full-access |
Full system access (use with caution) |
Note: There is no --no-sandbox flag or sandbox = "none" config option. To bypass the sandbox entirely, use --dangerously-bypass-approvals-and-sandbox (alias --yolo).
Common Combinations
# Safe daily development (recommended)
codex --full-auto "task"
# Equivalent to: -a on-request -s workspace-write
# Full automation (CI/scripts)
codex -a never -s workspace-write "task"
# Audit / review only
codex -s read-only "Review the codebase"
# Unrestricted (isolated environments ONLY)
codex --dangerously-bypass-approvals-and-sandbox "task"
# Alias: --yolo
Configuration (~/.codex/config.toml)
Config uses TOML format (not JSON). The file is config.toml, never config.json.
Minimal config
model = "gpt-5-codex"
approval_policy = "on-request"
Full config example
model = "gpt-5-codex"
approval_policy = "on-request"
[sandbox_workspace_write]
network_access = false # true to allow network
[features]
shell_snapshot = true # faster repeated commands
[tui]
alternate_screen = "auto"
animations = true
Profiles (for different workflows)
Profiles use [profiles.<name>] (plural "profiles", not singular "profile"):
[profiles.ci]
model = "gpt-5-codex"
approval_policy = "never"
[profiles.review]
model = "gpt-5-pro"
model_reasoning_effort = "high"
approval_policy = "untrusted"
Use a profile: codex --profile ci "task" or codex -p ci "task", or set profile = "ci" at the top level as default.
Config precedence (highest → lowest)
- CLI flags (
--model,-c key=value) - Project config:
.codex/config.tomlin project root (trusted projects only) - User config:
~/.codex/config.toml - System/built-in defaults
Non-Interactive Mode (codex exec)
For CI pipelines and shell scripts, always use codex exec (not bare codex). The exec subcommand runs non-interactively and exits when done:
# Basic
codex exec "Update the CHANGELOG for v2.1.0"
# With options
codex exec \
--full-auto \
--model gpt-5-codex \
--path /my/project \
"Fix all TypeScript type errors"
# JSON output (for parsing)
codex exec --json "Find all TODO comments"
# Resume previous session
codex exec --resume <session-id> "Continue where we left off"
GitHub Actions example
- name: Run Codex
run: |
npm i -g @openai/codex
codex exec --full-auto "Update CHANGELOG"
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
TUI Slash Commands
| Command | Effect |
|---|---|
/status |
Show model, approval policy, token usage, workspace roots |
/permissions |
Change approval mode interactively |
/model |
Switch model mid-session |
/clear |
Clear transcript, start fresh conversation |
/copy |
Copy latest Codex output to clipboard |
/plan |
Enter plan mode |
/review |
Review changes in working tree |
/mcp |
List available MCP tools |
/agent |
Switch between agent threads |
/feedback |
Submit feedback |
/logout |
Clear stored credentials |
Keyboard shortcuts:
Enterwhile running → inject new instructionsTab→ queue follow-up for next turnEsc Esc→ edit previous message / fork from that point!command→ run local shell command, result feeds Codex
MCP Servers
Add third-party tools to Codex via Model Context Protocol:
# ~/.codex/config.toml
[mcp_servers.github]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-github"]
env = { GITHUB_TOKEN = "$GITHUB_TOKEN" }
[mcp_servers.my-api]
url = "https://my-server.example.com/mcp"
Run Codex itself as an MCP server (for other agents to consume) using the mcp subcommand (not a flag):
codex mcp
# Note: this is a subcommand, NOT "codex --mcp-server"
Network Access
By default, network is disabled in sandbox:
# Enable network for one run
codex -s workspace-write \
-c 'sandbox_workspace_write.network_access=true' \
"npm install and run tests"
Agent Skills (.codex/skills/)
Codex supports reusable skill bundles. Reference with $skill-name syntax in the TUI:
.codex/
skills/
my-skill/
skill.md # instructions for this skill
Usage in TUI: Use $my-skill to generate a new module
Troubleshooting
| Problem | Fix |
|---|---|
| Approval prompts won't stop | Check /status, restart with explicit -a flag or profile |
| Network access denied | Add -c 'sandbox_workspace_write.network_access=true' |
| Sandbox ENOENT on macOS | Run xcode-select --install, check dir permissions |
| Landlock error on Linux/WSL | Update WSL2 or use --dangerously-bypass-approvals-and-sandbox in isolated env |
| Auth loop / browser keeps opening | Run codex logout, then rm -f ~/.codex/auth.json, use OPENAI_API_KEY |
| Settings reset after reconnect | Use a named profile in config.toml |
Key Flags Reference
| Flag | Short | Description |
|---|---|---|
--ask-for-approval |
-a |
Approval mode: untrusted, on-request, never, reject |
--sandbox |
-s |
Sandbox mode: read-only, workspace-write, danger-full-access |
--full-auto |
Shortcut: -a on-request -s workspace-write |
|
--dangerously-bypass-approvals-and-sandbox |
--yolo |
No restrictions (isolated envs only) |
--model |
-m |
Override model for this run |
--profile |
-p |
Load named profile from config.toml |
--cd |
Set working directory without cd | |
--config |
-c |
Override any config key: -c model=gpt-4.1 |
--json |
Output newline-delimited JSON events | |
--oss |
Use local Ollama provider | |
--images |
Attach images to prompt (comma-separated paths) | |
--live-search |
Enable live web search | |
--resume |
Resume previous session by ID | |
--no-persist |
Don't write session rollout files to disk |
For detailed reference, see: https://developers.openai.com/codex/cli/reference/
More from biggora/claude-plugins-registry
captcha
>
32vite-best-practices
Vite build tool configuration, plugin API, SSR, library mode, and Vite 8 Rolldown/Oxc migration. Use when working with Vite projects, vite.config.ts, Vite plugins, building libraries or SSR apps with Vite, migrating from older Vite versions, or configuring Rolldown/Oxc options. Also use when the user mentions HMR, import.meta.glob, virtual modules, or Vite environment variables.
12test-mobile-app
>
11youtube-search
Search YouTube for videos, channels, and playlists — and extract rich metadata, transcripts, and analytics — fully autonomously without user intervention. Use this skill whenever the user mentions finding YouTube videos, searching YouTube, getting video stats, extracting transcripts or subtitles, analyzing a YouTube channel, looking up what's trending on YouTube, finding competitor videos, researching YouTube content, or automating any YouTube data collection workflow. Trigger even for indirect requests like 'find the top videos about X' or 'what's on YouTube about Y' — if YouTube content retrieval is involved in any way, use this skill.
6screen-recording
>
3text-to-speech
>
2