To reduce Codex CLI token usage, keep AGENTS.md short, limit unnecessary repository context, split broad work into verifiable tasks, avoid repeated searches, and ask for compact, maintainable patches. Measure cost per successful task instead of cost per request. A run that uses more reasoning but finishes cleanly can be cheaper than several cheap retries that leave a large patch to review.
What consumes tokens in Codex CLI
Codex CLI reads configuration, instructions, task prompts, chat history, tool results, file snippets, diffs, and command output. The more material it must consider, the more input it carries into model calls. The more it explains, plans, or rewrites, the more output it generates. In usage-based workflows, output-token waste and oversized patches can become both a billing problem and a review problem.
Official Codex documentation, checked July 14, 2026, says user configuration lives in ~/.codex/config.toml, project configuration can live in .codex/config.toml, and project instructions are discovered from AGENTS.md files. That gives you several places to control behavior, but every durable instruction should earn its keep.
Input, cached, reasoning, and output usage
Codex usage can include:
- Input: prompt, instructions, context, file snippets, and tool output.
- Cached input: repeated stable context that the provider may handle differently.
- Reasoning: extra model work for harder tasks when supported.
- Output: final answers, plans, code, diffs, and explanations.
Higher reasoning effort can help hard work, but it can increase latency and usage. The Codex model docs recommend increasing effort when the task needs deeper planning or analysis. For small mechanical changes, start lower.
Keep AGENTS.md concise and relevant
AGENTS.md is valuable because it gives Codex durable project rules. It is also part of the instruction context. Keep it short and operational:
# Repository notes
- Keep changes minimal and maintainable.
- Prefer existing helpers and patterns.
- Add dependencies only when clearly justified.
- Run targeted tests for changed behavior.
Avoid long background essays, stale setup notes, or rules that duplicate the obvious. If one folder needs special rules, place them near that folder rather than adding global instructions for the whole repository.
Limit unnecessary repository context
When you know where the change belongs, say so:
The relevant code should be in apps/proxy and packages/db.
Start there and search wider only if needed.
When you do not know, ask for a discovery pass:
Inspect the repo and identify the smallest likely edit surface.
Do not edit files yet.
This prevents the agent from mixing investigation, design, and implementation in one oversized run.
Break broad requests into verifiable tasks
Broad requests create broad context. Instead of:
Improve billing, dashboard, docs, and deployment.
use:
Fix the billing portal button on the dashboard.
Do not change checkout, pricing copy, or deployment config.
Verify with the existing dashboard tests.
Small tasks reduce retries and make review cheaper. You can still work through a larger roadmap, but each agent run should have a crisp acceptance condition.
Reduce repeated searches and tool calls
Codex is good at repository exploration, but repeated broad searches can add noise. Give it permission to stop when it has enough evidence:
Search for the route and handler once. If the ownership is clear, edit the
existing file instead of continuing to scan the repo.
For debugging, include exact failure output and the command that produced it. Avoid pasting full logs unless the full log is necessary.
Avoid oversized patches and speculative abstractions
Oversized patches cost twice: first in model output, then in human review. They can also slow the next agent run because future prompts must carry more project complexity. Ask Codex to prefer the existing structure:
Make the smallest correct change.
Do not introduce a new abstraction unless it removes clear duplication in the
changed code path.
This is especially important when the agent sees a pattern and wants to generalize it. Generalization is useful when it reduces real complexity. It is wasteful when it creates a framework for one call site.
Compare cost per successful task, not per request
A request can look cheap and still be a bad deal if it fails. Track:
- accepted or rejected result;
- elapsed time;
- input, cached, reasoning, and output tokens when available;
- files changed;
- source LOC changed;
- test and review effort.
Use the same task, model, repository, and prompt when comparing approaches.
Configuring an OpenAI-compatible base URL
For the built-in OpenAI provider, the official Codex advanced configuration docs say to use openai_base_url in user-level ~/.codex/config.toml when pointing Codex at an LLM proxy, router, or similar endpoint. The same docs warn that project-local .codex/config.toml cannot override provider redirection keys such as openai_base_url.
Example with a placeholder:
openai_base_url = "https://proxy.example.com/YOUR_PROXY_KEY/essential/openai"
Distill.codes uses this one-line configuration shape for Codex so users can keep their existing OpenAI access while routing supported generation requests through an optimization layer. The agent remains Codex, the provider remains OpenAI, and Distill.codes focuses on making supported coding-agent work leaner.
Practical checklist
- Keep
AGENTS.mdshort. - Use folder-specific instructions only when useful.
- Point Codex at likely files when you know them.
- Split broad work into small accepted outcomes.
- Ask for the smallest maintainable diff.
- Avoid speculative helpers and dependencies.
- Use
openai_base_urlin user-level config for proxy routing. - Compare completed tasks in separate fresh directories.
Sources checked July 14, 2026: Codex config basics, Codex advanced configuration, Codex model selection, AGENTS.md instructions, and the Distill.codes docs.