Claude Code と Codex を両方使っているとどっちがどっちの書き方だったか混乱するのでチートシートを作った。
0. 最小対応表
| Claude Code | Codex CLI |
|---|
| スキルの起動 | /name | $name($ で一覧) |
| 指示ファイル | CLAUDE.md | AGENTS.md |
| 設定ファイル | settings.json(コメント不可の JSON) | config.toml(TOML) |
| 非対話実行 | claude -p "..." | codex exec "..." |
| 権限 | permission mode 1 つで決まる | sandbox・approval・trust_level の 3 つで決まる |
| 一時上書き | --settings '<json>' | -c key=value |
/model はどちらにもある。$ はスキル起動の記法で、スラッシュコマンドの代わりではない。
1. スラッシュコマンドの対応
両方に存在するコマンド
| やりたいこと | Claude Code | Codex CLI | 補足 |
|---|
| モデル・推論強度 | /model | /model | Codex は 1 画面で effort も選ぶ |
| 権限設定 | /permissions | /permissions | 中身は別物(§3) |
| 差分レビュー | /review | /review | Claude Code 側は /code-review の別名 |
| 会話を圧縮 | /compact | /compact | |
| 一行要約 | /recap | /recap | |
| 新しいチャット | /clear | /new | Codex の /clear は端末クリア + 新チャット |
| セッション再開 | /resume | /resume | |
| 複製して分岐 | /fork | /fork | |
| 脇道の質問 | /btw | /side・/btw | |
| 長期ゴール | /goal | /goal | |
| 指示ファイル生成 | /init | /init | CLAUDE.md / AGENTS.md |
| スキル一覧 | /skills | /skills・$ | |
| MCP | /mcp | /mcp(verbose で詳細) | |
| フック | /hooks | /hooks | |
| プラグイン | /plugin | /plugins | 単複が違う |
| 状態・トークン | /status | /status | |
| 利用量 | /usage | /usage | |
| git diff | /diff | /diff | Codex は untracked も |
| ファイル参照 | @path | /mention | |
| IDE 連携 | /ide | /ide | |
| Vim | /vim | /vim | |
| 作業ディレクトリ | /cd | /cd(/pwd で確認) | |
| テーマ | /theme | /theme | |
| ステータスライン | /statusline | /statusline | |
| Markdown 書き出し | /export | /export | |
| 直前をコピー | /copy | /copy | |
| Plan モード | /plan | /plan | |
| エージェント一覧 | /agents | /agents | Codex はデーモン上の全セッション |
| サブエージェント | (/agents に含む) | /subagents | Codex では別コマンド |
| 名前変更 | /rename | /rename | |
| 設定取り込み | /import | /import | Codex の /import は Claude Code から |
| フィードバック | /feedback・/bug | /feedback | |
| ログアウト | /logout | /logout | |
| 終了 | /exit | /exit・/quit | |
Claude Code だけに存在するコマンド
| コマンド | 何をするか |
|---|
/context | コンテキスト使用量を可視化 |
/cost | /usage の別名 |
/doctor | セットアップ診断と修復 |
/memory | CLAUDE.md と auto memory の編集 |
/rewind | 会話とコードを巻き戻す(別名 /checkpoint /undo) |
/sandbox | Bash サンドボックスの切り替え |
/security-review | 現ブランチの差分を脆弱性観点でレビュー |
/verify | アプリを起動して変更が効いているか確認 |
/loop | 同じプロンプトを繰り返し実行 |
/run | プロジェクトのアプリを起動 |
/skill-doctor | スキルごとのコンテキスト消費と使用頻度 |
/config | 設定画面 |
/tasks | バックグラウンド作業の管理(別名 /bashes) |
/workflows | ワークフローの進捗 |
/artifacts | artifact を一覧・添付 |
/help | ヘルプ |
Codex CLI だけに存在するコマンド
| コマンド | 何をするか |
|---|
/archive /delete | このセッションをアーカイブ / 完全削除して終了 |
/raw | コピーしやすい素のスクロールバック |
/personality | Codex の話し方 |
/pets | 端末のペット |
/memories | 記憶の使用と生成の設定 |
/keymap | TUI ショートカットの再割り当て |
/experimental | 実験機能のトグル |
/approve | 直前の自動レビュー却下を 1 回だけ承認 |
/title | 端末タイトルに出す項目 |
/debug-config | どの層の設定が効いているかを表示 |
/ps /stop | バックグラウンド端末の一覧 / 全停止 |
/setup-default-sandbox | 昇格したエージェントサンドボックス(広い権限で動く実行環境)の設定 |
環境によって表示されないコマンド(Codex)
| コマンド | 出る条件 |
|---|
/app | macOS / Windows のみ |
/sandbox-add-read-dir | Windows のみ |
/rollout /test-approval | デバッグビルドのみ |
/copy | Android 以外 |
2. 設定ファイルの場所と優先順位
| Claude Code | Codex CLI |
|---|
| ホーム | ~/.claude/(CLAUDE_CONFIG_DIR) | ~/.codex/(CODEX_HOME) |
| 形式 | settings.json(// コメント・末尾カンマは構文エラー) | config.toml |
| ユーザー設定 | ~/.claude/settings.json | ~/.codex/config.toml |
| プロジェクト共有 | .claude/settings.json | <repo>/.codex/config.toml(各階層) |
| 個人のプロジェクト設定 | .claude/settings.local.json | (分離した置き場なし) |
| ディレクトリの信頼 | ワークスペースの信頼 | [projects."<絶対パス>"] の trust_level |
| 組織の強制 | managed-settings.json / MDM | /etc/codex/requirements.toml・クラウド設定・macOS 管理プロファイル |
| 指示ファイル | CLAUDE.md | AGENTS.md |
| プロファイル | なし | -p <name> → $CODEX_HOME/<name>.config.toml |
| 一時上書き | --settings '<json>'・環境変数 | -c key=value(TOML として解釈) |
| 読み込みを絞る | --bare | exec --ignore-user-config / exec --ignore-rules |
設定の読み込み順と優先順位
同じ設定を 2 か所に書いたときは、優先度が高いほうが採用される。
Claude Code
| 優先度 | 設定の場所 |
|---|
| 高 | managed-settings.json / MDM / claude.ai コンソール |
| claude --settings '<json>' |
| .claude/settings.local.json |
| .claude/settings.json |
| 低 | ~/.claude/settings.json |
Codex CLI
| 優先度 | 層 | 設定の場所 |
|---|
| 高 | プロジェクト | cwd にいちばん近い .codex/config.toml |
| プロジェクト | 親をさかのぼった .codex/config.toml(cwd に近いほど優先) |
| profile | $CODEX_HOME/<name>.config.toml(-p <name> 指定時) |
| user | $CODEX_HOME/config.toml |
| 低 | system | /etc/codex/config.toml |
プロジェクト層は、そのディレクトリが untrusted のときは読み込まれても無効化される。実際にどう重なったかは /debug-config で見られる。
スキルの置き場と起動記法
| Claude Code | Codex CLI |
|---|
| 個人 | ~/.claude/skills/<name>/SKILL.md | ~/.agents/skills/、$CODEX_HOME/skills/ |
| プロジェクト | .claude/skills/<name>/SKILL.md | <repo>/.agents/skills/、<repo>/.codex/skills/ |
| 同梱 | バンドルスキル | ~/.codex/skills/.system/ |
| 旧式 | .claude/commands/<name>.md | (プラグインへ移行) |
| 起動 | /name | $name |
Codex は .claude/skills/ を読まず、Claude Code は .agents/skills/ を読まない。Codex から何が見えているかは codex debug prompt-input の <skills_instructions> に出る。
3. 権限モデル
| やりたいこと | Claude Code | Codex CLI |
|---|
| 読み取り以外は確認する | --permission-mode manual(確認すれば書ける) | --sandbox read-only(確認しても書けない) |
| ファイル編集を確認なしで通す | --permission-mode acceptEdits | --sandbox workspace-write と --ask-for-approval never の両方(編集だけを通す設定は無く、これがいちばん近い) |
| 自動チェックに任せて通す | --permission-mode auto | --approve-for-me(workspace-write で自動レビューにかける) |
| 確認を出さない | --permission-mode dontAsk(事前承認したツールだけ動く) | --ask-for-approval never(危険と判定されたものは確認ではなく拒否) |
| 隔離環境で全部飛ばす | --dangerously-skip-permissions | --dangerously-bypass-approvals-and-sandbox |
| 書き込める場所を足す | --add-dir | --add-dir |
| 特定のコマンドを許す・禁じる | settings.json の permissions.allow / deny | ~/.codex/rules/*.rules |
Codex では sandbox と approval が独立して効く。--sandbox を緩めても確認は消えないし(対話版の既定は on-request)、--ask-for-approval never にしても書き込める範囲は広がらない。両方を指定して初めて「書けて、かつ聞かれない」になる。ただし --ask-for-approval は対話版だけのフラグで、codex exec に渡すと落ちる(exec は既定が never なので --sandbox だけ指定すればよい)。
Claude Code の permission mode
| モード | 確認なしで動くもの |
|---|
default | 読み取りのみ(UI と --permission-mode では manual) |
acceptEdits | + ファイル編集・mkdir touch mv cp 等 |
plan | 読み取り(auto mode があれば分類器が承認したコマンド) |
auto | すべて(バックグラウンドの安全チェック付き) |
dontAsk | 事前承認したツールのみ |
bypassPermissions | すべて(隔離環境専用) |
同じ claude でも、プランとクライアントによって開始モードが変わる。
| 起動する環境 | 開始モード |
|---|
| Pro / Max / Team プランのターミナル・VS Code 拡張 | auto |
| Enterprise プラン・API キー | default |
claude -p(非対話)・Agent SDK | default |
明示するなら起動時に渡す。
claude --permission-mode acceptEdits
# ユーザー設定の permissions.defaultMode でも変えられる
Codex の 3 つの設定
| 設定 | 決めること |
|---|
sandbox_mode | ファイルとネットワークにどこまで触れるか(書き込める場所・通信の可否) |
approval_policy | 実行前に人に確認を出すか(出さない設定なら、危険と判定されたコマンドは確認ではなく拒否) |
trust_level | そのディレクトリでの sandbox_mode の既定値(明示指定が無いときだけ効く) |
sandbox_mode(触れる範囲)
--sandbox | 意味 |
|---|
read-only | 読むだけ。ネットワーク遮断 |
workspace-write | cwd と writable_roots に書ける。ネットワークは既定で遮断(sandbox_workspace_write.network_access = true で開く) |
danger-full-access | 制限なし |
approval_policy(人に確認を出すか)
approval_policy | 意味 |
|---|
on-request | 既定。モデルが必要と判断したときに聞く |
never | 聞かない。codex exec はこれが既定 |
untrusted | 内部ポリシー。trust_level から自動選択され、直接は書けない |
granular | 承認フローごとに個別指定 |
--ask-for-approval で選べるのは on-request と never のみ。
trust_level(sandbox の既定値を決める)
--sandbox も config.toml の sandbox_mode も指定していないとき、config.toml の [projects."<絶対パス>"] にそのディレクトリの trust_level が書かれているかどうかで既定が決まる(Linux)。
trust_level の書かれ方 | 既定の sandbox |
|---|
trusted | workspace-write |
untrusted | workspace-write(値が何であれ、書かれていれば上がる) |
| その項目自体が無い | read-only |
sandbox_mode を書いてあればそちらが優先。いま実際にどうなっているかは codex debug prompt-input の <permissions instructions> に出る。
コマンド単位の許可ルール
| Claude Code | Codex CLI |
|---|
| 置き場 | settings.json の permissions.allow / ask / deny | ~/.codex/rules/*.rules(execpolicy) |
| 書き方 | Bash(git push *) | prefix_rule(pattern=[...], decision=...) |
| 判定値 | allow / ask / deny | allow / prompt / forbidden |
allow の意味 | 確認なしで実行 | サンドボックスの外で実行 |
| テスト | なし | match / not_match を同じ宣言に書ける |
Codex 側の書き方の例。pnpm test と pnpm db:reset は禁じて、pnpm build と pnpm lint は通す。match / not_match に例を並べておくと、狙いどおりに効くかを同じ宣言の中で確かめられる。
prefix_rule(
pattern = ["pnpm", ["test", "test:run", "db:reset"]],
decision = "forbidden",
justification = "テスト実行は委譲元の責務",
match = ["pnpm test", "pnpm db:reset"],
not_match = ["pnpm build", "pnpm lint"],
)
Codex の照合規則では、コマンドは | && ; (...) で分割され、各セグメントが独立に判定される。リダイレクト・変数展開・ワイルドカードを含むと分割できず、["bash","-lc","<全体>"] としてルールにかけられる(まず一致しない)。
自分は Claude Code だけ defaultMode を auto にして、deny に rm -rf と Slack・Gmail 系の MCP を並べている。Codex は config.toml を置いていないので、何も指定しなければ read-only から始まる。
4. CLI フラグとサブコマンド
| やりたいこと | Claude Code | Codex CLI |
|---|
| 非対話で実行 | claude -p "..." | codex exec "..." |
| 応答をファイルへ | (--output-format で加工) | exec -o <file> |
| JSON で流す | --output-format stream-json | exec --json |
| 直前を継続(対話) | claude -c | codex resume --last |
| 選んで再開(対話) | claude --resume | codex resume |
| 非対話を再開 | claude -p --resume <id> | codex exec resume --last "<指示>" |
| モデル指定 | --model | -m / --model |
| 作業ディレクトリ | なし | -C / --cd |
| 書き込み許可を足す | --add-dir | --add-dir |
| 権限を飛ばす | --dangerously-skip-permissions | --dangerously-bypass-approvals-and-sandbox |
| 診断 | claude doctor | codex doctor |
| MCP 管理 | claude mcp | codex mcp |
| コードレビュー | /code-review・claude ultrareview | codex review / codex exec review |
| バックグラウンド | claude --bg(起動)・claude agents(一覧) | codex agents(一覧・閲覧) |
| git 管理外で動かす | (制限なし) | exec --skip-git-repo-check |
| セッションを残さない | なし | exec --ephemeral |
| 機能フラグ | なし | codex features list(実効値) |
exec と書いた行は codex exec 専用(対話版に渡すと unexpected argument)。逆に -a / --ask-for-approval と --search は exec に無い。