Comparisons
Feature Matrix
Legend: ✅ Supported · ⚠️ Partial or different implementation · ❌ Not supported · ? Unable to verify
| Feature | Claude Code | Codex | Kimi Code |
|---|---|---|---|
| Interactive CLI | ✅ claude TUI | ✅ codex TUI | ✅ kimi TUI |
| Slash commands | ✅ Large built-in set (/compact, /plan, /review, …) | ✅ Built-in set (/compact, /plan, /review, …) | ✅ Built-in set (/compact, /plan, /goal, …) |
| Plan mode | ✅ /plan, Shift+Tab, --permission-mode plan | ✅ /plan (TUI only) | ✅ /plan, Shift-Tab, --plan |
| Project instructions | ✅ CLAUDE.md | ✅ AGENTS.md | ✅ AGENTS.md |
| Agents/Subagents | ✅ .claude/agents/ + built-ins | ✅ .codex/agents/ + built-ins | ✅ .kimi-code/agents/ + built-ins |
| Skills | ✅ SKILL.md (also legacy .claude/commands/) | ✅ SKILL.md under .agents/skills/ | ✅ SKILL.md or flat .md |
| MCP | ✅ Client (stdio/HTTP/SSE/WS) | ✅ Client (stdio/streamable HTTP) + codex mcp-server | ✅ Client (stdio/HTTP/SSE) |
| Context compaction | ✅ Auto (~95%) + /compact | ✅ Auto (token limit) + /compact | ✅ Auto (reserved threshold) + /compact |
| Session resume | ✅ -c, -r, /resume | ✅ codex resume, /resume | ✅ -c, -S, /sessions |
| Code review | ✅ /code-review, /review, /security-review | ✅ /review, codex review | ❌ No code review command documented |
| Permission controls | ✅ Six modes + allow/ask/deny rules | ✅ Approval policies + named profiles + execpolicy | ✅ Three modes + [[permission.rules]] |
| Sandbox | ⚠️ Optional OS sandbox (off by default) | ✅ OS sandbox on by default | ❌ No OS-level sandbox documented |
| Non-interactive mode | ✅ claude -p | ✅ codex exec | ✅ kimi -p |
| Hooks | ✅ Command + LLM-prompt hooks | ✅ hooks.json / inline [hooks] | ⚠️ [[hooks]] in config.toml (fail-open) |
| Plugins | ✅ /plugin + marketplaces | ✅ codex plugin + marketplaces | ✅ /plugins + marketplace |
| Goal/autonomous mode | ✅ /goal [condition] | ✅ /goal (persistent goal, features.goals on) | ✅ /goal (auto-continuing turns, exit codes) |
| Custom providers/models | ⚠️ Anthropic + Bedrock/Vertex/Foundry | ✅ Custom model_providers (Responses wire API only) + local --oss | ✅ Multiple provider types + KIMI_MODEL_* envs |
Per-row notes
- Slash commands — All three have rich built-in command sets, but the names differ for the same task (e.g. Kimi
/permissionvs Claude/Codex/permissions; Kimi/sessionsvs Claude/Codex/resume). See Command Equivalents. - Plan mode — Claude’s plan mode is a permission mode (
plan), so it can be set at launch and combined with other permission settings. Codex’s/planonly switches the active chat and is unavailable while Codex is already working. Kimi’s plan mode restrictsWrite/Editto the plan file and blocksTaskStop; exiting plan mode requires user confirmation except in Never Ask mode. - Project instructions — Same concept, different filenames and precedence rules. Claude reads CLAUDE.md (with
@importsupport); Codex and Kimi read AGENTS.md. Details in Project Instructions: CLAUDE.md vs AGENTS.md. - Agents/Subagents — All three support custom subagent definitions, but in different formats and locations: Claude uses Markdown + YAML frontmatter in
.claude/agents/; Codex uses standalone TOML files in.codex/agents/; Kimi uses Markdown + YAML frontmatter in.kimi-code/agents/and.agents/agents/. - Permission controls — Not 1:1. Claude has six permission modes (
default/manual,acceptEdits,plan,auto,dontAsk,bypassPermissions);autobecame the default mode in August 2026 and uses a background safety classifier. Codex separates approval policy (untrusted/on-request/never/granular) from sandbox mode. Kimi has three modes: Always Ask (default), Ask When Needed (--yolo), and Never Ask (--auto). Claude’sautomode is not the same as Kimi’sauto/Never Ask: Claude still runs classifier checks, while Kimi’s Never Ask decides everything automatically without asking. See Permissions and Security Models. - Sandbox — Codex enforces an OS-level sandbox by default (macOS Seatbelt, Linux bwrap + seccomp, Windows native sandbox or WSL2) with three modes:
read-only,workspace-write,danger-full-access. Claude Code has an optional sandbox (sandbox.enabled, macOS/Linux/WSL2, default off) with network domain allowlists. Kimi Code documents no OS-level sandboxing; permissions, approval rules, and hooks are the documented safety model, and its hooks are fail-open. - Hooks — Claude supports
commandhooks (bash) andprompthooks (LLM-evaluated) across many events, with blocking exit code 2. Codex supports lifecycle hooks viahooks.jsonor inline config across a similar event list. Kimi hooks allow only four fields (event,matcher,command,timeout), onlyPreToolUse,Stop, andUserPromptSubmitcan block, and any non-zero exit other than 2 (or a timeout/crash) allows the action — fail-open, so they must not be the sole security barrier. - Custom providers/models — Claude Code supports Anthropic plus third-party clouds (Bedrock, Vertex, Foundry) via env vars/settings; arbitrary OpenAI-compatible endpoints are not documented. Codex supports custom
model_providerswithbase_urland headers, but only theresponseswire API, plus local models via--oss(LM Studio/Ollama). Kimi supportskimi,anthropic,openai,openai_responses,google-genai, andvertexaiprovider types, custombase_url, and aKIMI_MODEL_*env family that synthesizes a temporary provider.
Last verified: 2026-09-07
Official sources:
- https://code.claude.com/docs/en/cli-reference.md
- https://code.claude.com/docs/en/commands.md
- https://docs.claude.com/en/docs/claude-code/permissions
- https://docs.claude.com/en/docs/claude-code/sub-agents
- https://developers.openai.com/codex/cli/slash-commands
- https://developers.openai.com/codex/config-reference
- https://developers.openai.com/codex/sandbox
- https://developers.openai.com/codex/subagents
- https://www.kimi.com/code/docs/en/kimi-code-cli/reference/slash-commands.html
- https://www.kimi.com/code/docs/en/kimi-code-cli/reference/kimi-command.html
- https://www.kimi.com/code/docs/en/kimi-code-cli/configuration/config-files.html
- https://www.kimi.com/code/docs/en/kimi-code-cli/customization/agents.html
AI coding tools evolve quickly. If you find outdated information, please open an issue or pull request.