Skip to main content
skill CX Codex

local-codex — Claude Code skill: what it does, how to install

Runs the local OpenAI Codex CLI as a non-interactive sub-agent using ChatGPT OAuth. Ideal for offloading code generation and reviews without API keys.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add daymade/claude-code-skills --skill local-codex -a claude-code
Open on GitHub

What local-codex does

The skill connects an agent to the local OpenAI Codex CLI to handle delegated coding tasks. It routes operations through a Python script at scripts/codex_wrapper.py. You can generate code with exec, inspect repository diffs with review, and read authentication state with status. Codex can use GPT-5.5 agent capabilities.

Authentication relies strictly on ChatGPT OAuth from the local credential store. Never set OPENAI_API_KEY. The CLI detection checks CODEX_BIN first, falls back to which codex, and finally looks inside macOS ChatGPT.app resources. If CODEX_BIN points to a non-executable file, execution halts immediately with an error.

Sandbox flags enforce filesystem safety: read-only limits actions to inspection, while workspace-write allows edits within the target folder. Note that the Python wrapper only handles single-shot tasks. Resuming multi-step sessions requires direct codex exec resume CLI calls instead.

What it helps with

  • delegate code generation and refactoring to a local Codex process
  • run non-interactive code reviews on uncommitted changes
  • execute Codex tasks via ChatGPT OAuth without setting OPENAI_API_KEY
  • isolate filesystem changes with explicit sandbox permissions

Example prompts for the agent

  • Run codex exec to generate a Python function for calculating fibonacci
  • Review uncommitted git changes using codex review
  • Check local Codex login and credential status

How to install local-codex

1Skills CLI (Vercel)

npx skills add daymade/claude-code-skills --skill local-codex -a claude-code

2Manually: put the files in place

~/.claude/skills/local-codex/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/local-codex/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about local-codex

How to install local-codex in Claude Code?

Run npx skills add daymade/claude-code-skills --skill local-codex -a claude-code.

What does local-codex do?

It wraps the local OpenAI Codex CLI to run non-interactive code generation, refactoring, and code review tasks.

Can I use an OpenAI API key with local-codex?

No, the wrapper strictly requires ChatGPT OAuth and instructs not to set OPENAI_API_KEY.

Source text

SKILL.md · MIT
---
name: local-codex
description: >-
  Launches and manages the local OpenAI Codex CLI as a non-interactive coding sub-agent via ChatGPT
  OAuth, never API keys. Use to delegate coding tasks to Codex, run codex exec, generate or
  refactor code, or get a Codex code review; phrases like 'codex', 'run codex', 'codex exec',
  'delegate to codex'.
---

# Local Codex

Delegate coding tasks to the local OpenAI Codex CLI agent using the authorized ChatGPT account's OAuth access.

## When to Use

- User wants to generate, refactor, or review code via Codex
- User wants to run `codex exec` for non-interactive tasks
- User wants to use Codex's GPT-5.5 agent capabilities
- User mentions "codex", "run codex", "delegate to codex"

## Authentication (ChatGPT OAuth)

**CRITICAL**: Use ChatGPT OAuth through the selected credential store. **Do NOT set `OPENAI_API_KEY` or pass API keys** for this workflow. Keep the authentication route separate from the account's allowance and extra Credit policy; OAuth does not guarantee that long work cannot consume extra Credit.

- Resolve the actual `CODEX_HOME` and store; the desktop app and CLI can share credentials.
- Before login, account switching or token recovery, read [the OAuth guide](references/oauth-guide.md) and follow its [recovery recipe](references/oauth-guide.md#remote-account-switch-and-expired-login-recovery). Use fresh empty stores for independent grants, retain explicitly authorized single-owner transfers, and verify actual access and existing-process adoption separately.
- Before a native quota query, read [refresh ownership](references/oauth-guide.md#bind-refresh-ownership-before-native-queries); a nominally read-only query can refresh credentials.
- For quota-driven continuation on another authorized account, use [the included-usage check](references/oauth-guide.md#quota-driven-continuation) before substantial execution; cached login or a new default file is not that check.

## Codex CLI Path

The skill auto-detects Codex CLI in this order:
1. `CODEX_BIN` env var, if set — explicit override. A non-executable path fails loudly
   instead of silently falling through to a different build (that would make whatever
   the wrapper measured unattributable).
2. `which codex` — the executable first on the wrapper process's PATH, including
   npm global installs under nvm (`~/.nvm/versions/node/*/bin/codex`). This lookup
   does not execute an interactive shell's alias or function.
3. `/Applications/ChatGPT.app/Contents/Resources/codex` — the copy bundled inside
   ChatGPT.app, fallback only. Its version tracks the Desktop app and can diverge from
   the npm build, so it is deliberately last.

If a bad `CODEX_BIN` was set, the wrapper exits 1 with
`{"error": "CODEX_BIN not executable", "path": <value>}` — the offending value is in
the error itself, and `searched_paths` is not emitted for this case (no other search
step ran). If neither PATH nor the app bundle has a codex, the wrapper exits 1 with
the actual search order in `searched_paths`.

Whichever binary wins, attribute behaviour to it by versioning **the binary that
ran**. An unrelated shell's `codex --version` may resolve another entry, which is
the wrong build to quote when the fallback picked the app-bundled one. Use the
`codex_path` field from the wrapper's status output:

```
"<codex_path from status output>" --version
```

Before using this wrapper, resolve the user's ordinary CLI entry. When that entry
is a shell function or launcher supplying network/auth context, use it through
its owning shell instead of silently substituting the discovered binary. On macOS
zsh, inspect with `/bin/zsh -lic 'command -v codex; codex --version'`, then run
`codex` inside that same shell mode. Put the finite timeout around the shell
process: `gtimeout … codex` resolves an executable and cannot call a shell function.
The bundled Python wrapper does not reproduce shell initialization or support
every native flag; use native CLI invocation when those capabilities are required.

## Usage Patterns

### 1. Basic exec (single task)

```bash
python3 scripts/codex_wrapper.py exec "<prompt>" [<workdir>] [<model>] [<sandbox>] [<timeout>]
```

Example:
```bash
python3 scripts/codex_wrapper.py exec \
  "Write a Python function to calculate fibonacci" \
  /tmp \
  gpt-5.5 \
  workspace-write \
  300
```

### 2. Code review

```bash
python3 scripts/codex_wrapper.py review [<workdir>] [<model>] [uncommitted:true] [<timeout>]
```

Example:
```bash
python3 scripts/codex_wrapper.py review \
  /path/to/repo \
  gpt-5.5 \
  true \
  300
```

### 3. Inspect cached login

```bash
python3 scripts/codex_wrapper.py status
```

Interpret this result using [cached login inspection](references/oauth-guide.md#cached-login-inspection).
For an authorized real access check, follow that guide's Verification route.

## Parameters and results

The command arguments, defaults and JSON fields are defined by `main()`,
`exec_codex()`, `review_codex()` and `check_auth_status()` in
[`scripts/codex_wrapper.py`](scripts/codex_wrapper.py). Use those definitions
rather than a second parameter or output-field table.

## Safety Notes

- `sandbox=read-only` for analysis/review tasks (no file writes)
- `sandbox=workspace-write` for code generation (writes to working dir)
- `sandbox=danger-full-access` only when explicitly needed (full system access)
- Always use `--skip-git-repo-check` when running outside git repos
- Use `--ephemeral` for one-off tasks (no session persistence)

## Session Management

For multi-step tasks, Codex supports session resume:
```bash
# First step
codex exec --json "Step 1..."
# Later, use the session ID reported by that first invocation:
codex exec resume "${CODEX_SESSION_ID:?Set the session ID from the first invocation}" "Step 2..."
```

The wrapper currently runs single-shot exec. For multi-step workflows, use raw `codex exec` commands.
An ephemeral invocation does not persist a session for later resume.
Use `--last` only after confirming that the most recent recorded session is the intended target.

## Limitations

- Remote login can use device authorization with a browser on another machine; follow the OAuth guide instead of requiring a desktop app on the remote host.
- Inspect the selected binary's `doctor --help` before using its diagnostics; when supported, use the full report for endpoint/remedy details rather than `--summary`. Interpret the failed check, not only the aggregate exit code, and read the emitted JSON schema instead of assuming an older build's keys.
- Shell environment inheritance follows the selected build's `shell_environment_policy`; inspect the effective configuration. Keep credentials out of prompts.
- Large file operations may need increased timeout

© daymade · MIT · daymade/claude-code-skills

Similar skills

All skills for Agent setup: memory, context, orchestration →

From the same set64

claude-switch-models-setup Sets up isolated profiles to run multiple providers like Kimi, DeepSeek, and Anthropic in separate terminal windows. It stops configuration drift while sharing common skills and hooks. CX Codex +1 344installs design-style-picker Generates a batch of visual design directions and lets you choose from images instead of a written brief. Handy when a client cannot put the look into words. CX Codex +1 342installs notify-wecom Sends a single one-off message to a WeCom (Enterprise WeChat) group bot. Handy when the team needs a quick ping without templates or setup. CX Codex +1 341installs setup-notifications-via-wecom Sets up a WeCom group bot webhook and sends technical status messages through it. Useful when a backup, sync or cron job should report on its own. CX Codex +1 341installs wps-doc-scraper This skill archives public WPS/KDocs documents and embedded ProcessOn mind maps as raw data, SVG or PNG, and Markdown. Useful when a link has to be saved without logging in. CX Codex +1 334installs codex-image-gallery Launches a local browser gallery for reviewing Codex-generated images. Useful when you need to inspect local output folders without leaving your agent workflow. CX Codex +1 326installs download-gemini-images This skill downloads images from an open Gemini chat through your logged-in Chrome session and packages them into a ZIP in thread order. CX Codex +1 325installs openclaw-model-switch Safely switches or repairs OpenClaw model settings in openclaw.json. It handles primary model switches, routing errors, and token hijack bugs without breaking gateway sync. CX Codex +1 323installs

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor