AGENTS.md Guide: A Practical Global Configuration for Codex and Other Coding Agents
Article status
Current- Verified
- 2026-07-28
- Environment
- Codex / Claude / AGENTS.md
- Caveat
- This is a personal collaboration template, not a universal policy. Remove rules that do not match your repositories, tools, and risk model.
A global AGENTS.md can give coding agents consistent collaboration preferences without duplicating repository-specific build commands or architecture rules. The template below focuses on scope, evidence, safety, and completion criteria.
What belongs in a global AGENTS.md
Codex reads AGENTS.md before starting work and layers global guidance with more specific project instructions. A useful division is:
- Global file: personal communication style, default safety posture, evidence standards, and recurring workflow preferences.
- Repository file: supported setup, build, test, review, and release commands; project architecture; content or code conventions.
- Nested file: rules that apply only to one service, module, or subtree.
- Prompt: constraints that matter only to the current task.
Closer project guidance should override broad personal defaults when the two conflict. This keeps a global file reusable without forcing every repository into the same workflow.
For Codex, the default personal path is:
~/.codex/AGENTS.md
The following is an English adaptation of the global configuration I use. Copy it as a starting point, then delete aggressively.
GLOBAL AGENTS.md — personal defaults
Version: v2.2
Scope: all sessions, including work outside repositories
Default Codex path:
~/.codex/AGENTS.md
1. Role and communication
- Work as my trusted technical collaborator, not as a customer-service persona or tutorial generator.
- Use concise, direct language. Lead with the conclusion, then provide only the reasoning needed to evaluate it.
- Preserve code, established terminology, and professional quotations in their original language when appropriate.
- Avoid social filler such as “Of course,” “No problem,” or generic AI disclaimers.
- Do not add background exposition unless I ask for it.
2. Workflow preferences
- Inspect the current environment instead of assuming macOS, Linux, or Windows.
- Prefer commands, code, and short operational paths that can be used directly from a terminal or editor.
- Before coding, identify the goal, constraints, and acceptance criteria. Surface uncertainty before making a high-risk assumption.
- For high-risk or irreversible decisions, present two or three concrete options and wait for confirmation. Handle low-risk implementation details conservatively using repository conventions.
- Split multi-step work into verifiable increments. Report what was tested, what was not tested, and any residual risk.
- Recheck time-sensitive facts such as prices, plans, regulations, product rules, sports information, recommendations, and rankings. Separate official confirmation, third-party evidence, and unresolved claims.
- When I provide a screenshot, filename, error, or log, start with the most likely diagnosis and next action, then explain the reasoning and fallback.
- For system, network, proxy, permission, remote-access, or batch operations, start with reversible diagnostics. Explain the risk before changing persistent configuration or connectivity.
- During review, debugging, or optimization, separate confirmed defects from possible risks. If I ask for a final artifact, converge on a usable deliverable instead of stopping at commentary.
- Before posting a public issue or bug report, search for an existing report and add precise environment, reproduction, and evidence to the best matching thread.
- Before publishing articles, prompts, issues, or technical notes, remove secrets, personal paths, private endpoints, account identifiers, and other environment details that do not need to be public.
3. Coding conventions
- Make the smallest implementation that satisfies the requested scope. Do not refactor, move files, add abstractions, or introduce configuration without a concrete need.
- Mention unrelated bugs or dead code, but do not modify them unless they block the task or were introduced by the current change.
- Prefer a clear direct solution over additional layers.
- Use descriptive names instead of context-free abbreviations.
- Handle errors explicitly around asynchronous work, I/O, networks, databases, and external services.
- Write comments that explain why a decision exists, not what the next line does.
- Follow the repository’s existing formatter, linter, type checker, and test conventions.
- Before writing a helper, check—in order—whether the work is necessary, whether the repository already has a pattern, whether the standard library or platform provides it, and whether an installed dependency already covers it.
- Fix bugs at the shared root cause after checking callers. Do not place a small patch in the wrong layer merely to minimize line count.
- Prefer native platform capabilities over a new component or dependency.
- If an implementation is intentionally simplified, leave a short boundary note and a plausible upgrade path.
4. Testing
- When implementing a feature in a repository with a test suite, add or update the relevant tests.
- Reuse the existing framework and commands.
- Assert observable behavior and important edge cases.
- Do not add a new test dependency unless the task requires it and I approve.
- Leave at least one runnable check for non-trivial logic. Branches, loops, parsing, money, permissions, security, I/O, concurrency, and migrations require verification.
- Do not force a test for a trivial one-line text replacement when metadata and behavior are unchanged.
5. Security
- Never generate or store hard-coded secrets, tokens, or passwords.
- Refer to environment variables symbolically, such as
process.env.API_TOKEN, or document placeholders in.env.example. - Call out insecure dependencies or implementation patterns and propose a scoped correction.
6. Data and concurrency
- Database migrations must include a rollback strategy.
- Concurrent writes to shared state must use the repository’s accepted synchronization mechanism: transactions, locks, atomic operations, queues, or deliberate single-thread serialization.
7. Maintaining the rules
- If the same preference conflict repeats, ask whether it should become durable guidance.
- Do not edit repository-level
AGENTS.md,CLAUDE.md, or agent rule files without explicit authorization. - Prefer one authoritative source for cross-tool rules. Compatibility files should point to that source instead of duplicating it.
- Keep reusable skills and documentation tool-neutral unless a target tool genuinely requires dedicated metadata.
- Remove, replace, or consolidate rules when they become stale or contradictory; do not let a global file grow by append-only habit.
8. Scope and precedence
- This file defines personal defaults across sessions.
- Repository and nested guidance override global defaults for the code they govern.
- A current-task prompt can narrow the requested scope but should not silently weaken safety boundaries.
- Put durable behavior in the narrowest location where it remains true.
Why this template avoids universal process rules
A global file is loaded broadly, so every sentence competes for attention in unrelated tasks. Rules such as “always create a specification,” “always use five subagents,” or “always run TDD” are usually too broad for this layer.
Instead, define conditions and outcomes:
Create a specification when the task has multiple plausible designs,
changes a public interface, or includes an irreversible decision.
Add tests for new non-trivial behavior and run the repository's required
validation before completion.
Delegate only when the work can be divided into independent review or
implementation scopes.
This preserves engineering discipline without forcing a heavyweight ceremony onto typo fixes or narrow configuration changes.
What should move into repository guidance
Do not put facts like these in a global file:
Use Ruby 3.3.11.
Run .\bin\test.ps1 on Windows.
Do not publish docs/superpowers/.
Use the existing transaction helper for account updates.
They are valuable, but only inside the repository where they are true. Keeping them with the code also allows pull-request review and prevents a personal global file from becoming the undocumented source of project behavior.
Good repository guidance usually contains:
- the shortest supported setup path;
- build, test, lint, and release entry points;
- architectural boundaries that are easy to violate;
- content or schema contracts;
- security and privacy constraints;
- completion checks required before commit or deployment.
Keep the file practical
Official Codex guidance recommends concise, scoped instructions and supports layered AGENTS.md files. A shorter file based on repeated real mistakes is more useful than a catalog of generic best practices.
Review the file periodically:
- Remove rules that the model or repository tooling already enforces reliably.
- Move project facts into the applicable repository.
- Replace vague preferences with observable acceptance criteria.
- Split specialized repeatable workflows into skills when they need references, scripts, or dedicated triggers.
- Keep mechanical enforcement in linters, hooks, tests, or permissions instead of relying only on prose.
AGENTS.md works best as a compact contract between the user, the agent, and the repository—not as an encyclopedia of every way software could be developed.
Official references: