backends
ACE supports multiple AI coding backends. Set the backend in ace.toml or ace.local.toml with backend = "value". Default: claude.
cli override
Override the configured backend for a single invocation without editing config. Flags are global — they work on any ace subcommand.
| Flag | Equivalent |
|---|---|
| -b, --backend <value> | explicit backend name (claude, codex) |
| --claude | shortcut for --backend claude |
| --codex | shortcut for --backend codex |
$ ace --codex # launch Codex for this session only $ ace --claude -- --continue # resume with Claude, passing --continue through $ ace mcp --codex # check MCP against Codex without switching config
| Config Value | Binary | Project Dir | Instructions File |
|---|---|---|---|
| claude | claude | .claude | CLAUDE.md |
| codex | codex | .agents | AGENTS.md |
custom backends
Schools, users, or projects can register additional backend entries via [[backends]]. A custom backend aliases a built-in (claude, codex) and may override its launch cmd and env. The MCP, instructions file, and linked-folder behavior are inherited from the aliased kind.
# Override env on the built-in claude backend [[backends]] name = "claude" env = { ANTHROPIC_BASE_URL = "https://proxy.example.com" } # Custom name aliasing claude [[backends]] name = "bailer" kind = "claude" env = { ANTHROPIC_BASE_URL = "https://bailer.example.com" } # Wrap the claude binary through a process wrapper [[backends]] name = "claude-wrapped" kind = "claude" cmd = ["wrapper", "claude"]
Selectable via backend = "bailer" in any config layer or -b bailer on the CLI. Layer order for merging [[backends]] decls is school → user → project → local; later layers may add new entries or partially override earlier ones. A custom backend cannot introduce new behavior beyond its aliased kind — that requires a source change.
linked folders
ACE links school folders into the project's backend directory. skills/ becomes a real directory with per-skill symlinks (driven by skills/include_skills/exclude_skills in ace.toml); the rest are whole-directory symlinks. Not all backends support every folder.
| Backend | skills/ | rules/ | commands/ | agents/ |
|---|---|---|---|---|
| claude | yes | yes | yes | yes |
| codex | yes | — | — | — |
trust modes
Trust modes control backend permission prompts. Set with trust = "auto" or trust = "yolo" in ace.local.toml, or use ace auto / ace yolo.
| Backend | auto | yolo | CLI Flags |
|---|---|---|---|
| claude | yes | yes | --permission-mode auto / --permission-mode bypassPermissions |
| codex | yes | yes | --ask-for-approval on-request --sandbox danger-full-access / --dangerously-bypass-approvals-and-sandbox |
MCP registration
ACE registers [[mcp]] entries from school.toml into the active backend. All entries are remote HTTP endpoints.
| Backend | Method | OAuth |
|---|---|---|
| claude | CLI: claude mcp add -t http -s user | auto on 401 |
| codex | CLI-first: codex mcp add | in-session via /mcp |
readiness check
ACE verifies the backend is authenticated before launching a session.
| Backend | Check |
|---|---|
| claude | ~/.claude.json exists |
| codex | ~/.codex/auth.json exists, or CODEX_API_KEY / OPENAI_API_KEY set |
quirks
| Backend | Notes |
|---|---|
| claude | Default backend. Full feature support. MCP servers registered at user scope (-s user), not project scope. Auto-resume via --continue fails when no prior session exists; ACE prints a hint suggesting ace new to start fresh. |
| codex | MCP registration is CLI-first. MCP auth and ongoing management happen inside Codex via /mcp. Only skills/ is linked. |