Use C3 for repository intelligence and audited changes:
- Recall relevant project facts with c3_memory; inspect .c3/MAP.md.
- Find candidates with c3_search; map with c3_read(file_path) (no symbols), then read exact symbols or lines with c3_read. Check shared changes with c3_impact.
- Edit with c3_edit, validate with c3_validate, and record decisions with c3_session(action='log'). Preserve unrelated work.
- Use c3_shell for commands and c3_shell_job for long work; outputs already have a safety budget. Use c3_filter for other long logs.
- Snapshot with c3_session before clearing or handing off unfinished work.
If a C3 tool fails or its scope is insufficient, explain the limitation and use a targeted native fallback. Never bypass an access denial or masked path. A [c3-access:confirm] response is a hold: follow its S8 instructions, wait on the existing request with c3_override, and retry only after approval. A pending request is not a denial. Agent-config writes must go through c3_edit.
Codex lifecycle hooks require a supported client, installed .codex/hooks.json, and user trust in Codex. Installation does not establish that hooks are active. Native apply_patch and Bash hooks cover supported local tool paths only; C3's server-side guards remain authoritative for C3 calls.
MCP configuration uses [mcp_servers.c3] in project-scoped .codex/config.toml. Project configuration
and hooks must be trusted by Codex. Use c3 install-mcp --ide codex to update;
add --global-fallback only when a machine-wide fallback is wanted.
Detailed C3 actions are documented in MCP tool descriptions and c3 --help.
Live repo map: .c3/MAP.md — tree, commands, entry points, module
one-liners. Read it BEFORE any file discovery. C3 refreshes it
automatically (edit hooks + first tool call); if it is missing or looks
stale, run c3 map refresh. Freshness state: .c3/map.meta.json.