Aider is a git-native AI pair programming tool that runs in your terminal, edits your files, and writes a commit per change. The CLI exposes 175+ flags, four chat modes, 43 in-chat slash commands, and a YAML config schema with around 100 keys. The official docs split that surface across many pages. This cheat sheet condenses everything into one reference, with every command tested on a real macOS install of Aider 0.86.2 against multiple LLM providers.
If you came from the Aider setup guide and want one page open while you work, this is it.
Verified working: May 2026 with Aider 0.86.2, tested on macOS against Claude Haiku 4.5 and Sonnet 4.6 (via OpenRouter), with real cost and token counts captured from a fresh test repository.
Quick install reminder
The recommended path on Linux and macOS is uv tool install, which pins a working Python and pulls Aider into an isolated environment:
uv tool install aider-chat
aider --version
aider 0.86.2
The pipx install aider-install bootstrapper still works but adds a layer. uv is faster and avoids Python version mismatches. For provider keys, .env layout, and Windows install paths see the dedicated Aider AI pair programming setup.
Where Aider stores config
Aider reads four sources in priority order. Top of the list wins:
- CLI flags:
aider --model openrouter/anthropic/claude-sonnet-4.6 - Environment variables: every flag has an
AIDER_*twin (AIDER_MODEL,AIDER_OPENAI_API_KEY,AIDER_AUTO_COMMITS) - Config file:
.aider.conf.ymlsearched in git root, then current working directory, then$HOME - Built-in defaults
API keys belong in a separate .env file (default location: project root, also gitignored automatically by the first-run prompt):
# .env (in your repo root)
ANTHROPIC_API_KEY=sk-ant-api03-...
OPENAI_API_KEY=sk-proj-...
GEMINI_API_KEY=aiza...
OPENROUTER_API_KEY=sk-or-v1-...
DEEPSEEK_API_KEY=sk-...
And a working .aider.conf.yml validated end to end on macOS:
# .aider.conf.yml
model: openrouter/anthropic/claude-sonnet-4.6
weak-model: openrouter/anthropic/claude-haiku-4.5
editor-model: openrouter/anthropic/claude-sonnet-4.6
auto-commits: true
auto-lint: true
no-show-model-warnings: true
no-show-release-notes: true
lint-cmd:
- "python: ruff check --fix"
- "javascript: eslint --fix"
- "go: golangci-lint run --fix"
test-cmd: "pytest -x"
suggest-shell-commands: true
notifications: true
show-diffs: true
chat-history-file: .aider.chat.history.md
input-history-file: .aider.input.history
alias:
- "haiku:openrouter/anthropic/claude-haiku-4.5"
- "sonnet:openrouter/anthropic/claude-sonnet-4.6"
- "opus:openrouter/anthropic/claude-opus-4.7"
First-run behaviour and auto-gitignore
On the first launch in a git repo, Aider asks to add its history files to .gitignore. Real prompt:
Add .aider* to .gitignore (recommended)? (Y)es/(N)o [Yes]: Y
Added .aider* to .gitignore
Skip this with --no-gitignore. Always answer yes unless you have a strong reason. .aider.chat.history.md contains complete prompts and responses, including any code or configuration the model handled.
Top-level CLI flags reference
The full flag list is around 175 entries. Run aider --shell-completions bash for the exhaustive set. The table below is the working reference for the flags you actually use day to day.
| Flag | Env var twin | Purpose |
|---|---|---|
--model MODEL | AIDER_MODEL | Main chat model. Format: provider/model-id. |
--weak-model MODEL | AIDER_WEAK_MODEL | Cheap model for commit messages and summaries. |
--editor-model MODEL | AIDER_EDITOR_MODEL | Editor model used in architect mode. |
--editor-edit-format FMT | AIDER_EDITOR_EDIT_FORMAT | Edit format for the editor model. |
--list-models QUERY | AIDER_LIST_MODELS | Print every model whose name contains QUERY. |
--alias "name:model" | AIDER_ALIAS | Define a model alias. Repeatable. |
--api-key PROVIDER=KEY | AIDER_API_KEY | Set provider key inline. |
--set-env VAR=VAL | AIDER_SET_ENV | Set arbitrary env vars before starting. |
--reasoning-effort LEVEL | AIDER_REASONING_EFFORT | Reasoning knob for o-series and Sonnet 4.6+ thinking. |
--thinking-tokens N | AIDER_THINKING_TOKENS | Cap on thinking tokens. |
--edit-format FMT | AIDER_EDIT_FORMAT | diff, whole, udiff, diff-fenced. |
--architect | AIDER_ARCHITECT | Switch on architect mode (planner + editor). |
--auto-accept-architect | AIDER_AUTO_ACCEPT_ARCHITECT | Skip the architect/editor confirmation. Default true. |
--map-tokens N | AIDER_MAP_TOKENS | Repo map token budget. 0 disables. |
--map-refresh MODE | AIDER_MAP_REFRESH | auto (default), always, files, manual. |
--cache-prompts | AIDER_CACHE_PROMPTS | Use prompt caching where the provider supports it. |
--cache-keepalive-pings N | AIDER_CACHE_KEEPALIVE_PINGS | Ping every 5 minutes for N intervals to keep the cache warm. |
--max-chat-history-tokens N | AIDER_MAX_CHAT_HISTORY_TOKENS | Compact older history above this threshold. |
--no-git | AIDER_GIT | Run without git (no auto-commits, no diff flow). |
--no-auto-commits | AIDER_AUTO_COMMITS | Keep git but disable per-edit commits. |
--dirty-commits / --no-dirty-commits | AIDER_DIRTY_COMMITS | Commit pre-existing dirty changes when Aider runs. |
--commit | AIDER_COMMIT | Commit existing changes with an LLM-written message, then exit. |
--commit-prompt PROMPT | AIDER_COMMIT_PROMPT | Override the system prompt used to write commit messages. |
--dry-run | AIDER_DRY_RUN | Show edits, do not write files. Verified. |
--lint | AIDER_LINT | Lint and fix existing code, then exit. |
--lint-cmd "lang: cmd" | AIDER_LINT_CMD | Per-language lint command. Repeatable. |
--auto-lint | AIDER_AUTO_LINT | Lint after every edit cycle. Default on. |
--test | AIDER_TEST | Run tests and let Aider iterate fixes. |
--test-cmd CMD | AIDER_TEST_CMD | Test command Aider uses for --test and --auto-test. |
--auto-test | AIDER_AUTO_TEST | Run tests after every successful edit. |
--watch-files | AIDER_WATCH_FILES | Re-read changed files automatically. Hands-free AI! markers. |
--message MSG / -m | AIDER_MESSAGE | Send single message, exit. |
--message-file PATH / -f | AIDER_MESSAGE_FILE | Read the one-shot prompt from a file. |
--load PATH | AIDER_LOAD | Replay a saved /command file on launch. |
--apply FILE | AIDER_APPLY | Apply a SEARCH/REPLACE diff file Aider produced earlier. Verified. |
--apply-clipboard-edits | AIDER_APPLY_CLIPBOARD_EDITS | Apply edits pasted into the clipboard. |
--show-repo-map | AIDER_SHOW_REPO_MAP | Print the repo map and exit. Useful for debugging. |
--show-prompts | AIDER_SHOW_PROMPTS | Print the assembled system prompts and exit. |
--browser / --gui | AIDER_GUI | Launch the Streamlit browser UI. |
--copy-paste | AIDER_COPY_PASTE | Clipboard ferry mode for offline workflows. |
--vim | AIDER_VIM | VI editing mode in the input. |
--multiline | AIDER_MULTILINE | Multi-line input (Meta-Enter submits). |
--yes-always | AIDER_YES_ALWAYS | Auto-confirm every prompt. |
-c, --config PATH | AIDER_CONFIG | Use an explicit config file. |
--env-file PATH | AIDER_ENV_FILE | Use an explicit .env file. |
--upgrade | AIDER_UPGRADE | Upgrade in place. Verified. |
--just-check-update | AIDER_JUST_CHECK_UPDATE | Exit code reflects whether a new version is available. |
--shell-completions SHELL | AIDER_SHELL_COMPLETIONS | Print bash, zsh, or tcsh completions. |
Model selection and provider routing
Aider speaks every major LLM provider through LiteLLM. The model string is provider/model-id. Skip the provider for OpenAI:
# Anthropic (direct)
aider --model anthropic/claude-sonnet-4-6
aider --model anthropic/claude-opus-4-7
# OpenAI (no provider prefix)
aider --model gpt-5
aider --model o3
# Google
aider --model gemini/gemini-2.5-pro
aider --model gemini/gemini-2.5-flash
# DeepSeek
aider --model deepseek/deepseek-chat
aider --model deepseek/deepseek-reasoner
# AWS Bedrock (requires AWS_PROFILE)
aider --model bedrock/anthropic.claude-sonnet-4-6
# OpenRouter (single key, all providers, validated working in this guide)
aider --model openrouter/anthropic/claude-sonnet-4.6
aider --model openrouter/anthropic/claude-haiku-4.5
aider --model openrouter/google/gemini-2.5-pro
# Local Ollama
aider --model ollama_chat/llama3.3:70b
aider --model ollama_chat/qwen2.5-coder:32b
If you misspell the model name, Aider suggests close matches. Real warning captured during testing:
Warning for openrouter/anthropic/claude-haiku-4-5: Unknown context window size and costs.
Did you mean one of these?
- openrouter/anthropic/claude-3-5-haiku
- openrouter/anthropic/claude-3-haiku
- openrouter/anthropic/claude-haiku-4.5
Filter the full model list from the CLI:
$ aider --list-models claude
Models which match "claude":
- anthropic/claude-haiku-4-5
- anthropic/claude-opus-4-7
- anthropic/claude-sonnet-4-6
- anthropic/claude-sonnet-4-5-20250929
- ... 90+ more across providers
Built-in aliases
Aider ships preset shortcuts for the common models. Use them anywhere a model name would go:
| Alias | Resolves to |
|---|---|
opus | claude-opus-4-7 |
sonnet | claude-sonnet-4-6 |
haiku | claude-haiku-4-5 |
4o | gpt-4o |
mini | gpt-4o-mini |
flash | gemini-2.5-flash |
deepseek | deepseek/deepseek-chat |
r1 | deepseek/deepseek-reasoner |
Override or extend with --alias on the CLI or under the alias: key in .aider.conf.yml. CLI definitions win, then config-file aliases, then built-in aliases. Once defined, switch mid-session with /model haiku.
Main, weak, and editor models
- Main model: handles your prompts and code edits. Pick the smartest model your budget allows.
- Weak model: writes commit messages, summarises history. Cheap is fine.
claude-haiku-4-5,gpt-5-mini,gemini-2.5-flash. - Editor model: in architect mode, applies the planner’s instructions to files. Pick a model strong at structured output.
Chat modes
Switch modes mid-session with the corresponding slash command. Each mode shapes Aider’s behaviour:
| Mode | Slash | Behaviour |
|---|---|---|
| Code (default) | /code | Reads, edits, commits. The standard pair-programming loop. |
| Architect | /architect | Two-step. A planner model proposes changes, the editor model applies them. Best for larger refactors. |
| Ask | /ask | Read-only Q&A. No edits. Best for code review and exploration. |
| Help | /help | Aider answers questions about itself, including command and config questions. |
/ask vs /code workflow
The single highest-impact technique on Aider is bouncing between modes. Plan in /ask, execute in /code:
/ask How would you refactor src/auth/login.py to extract the rate-limiter into its own module?
... model proposes 3 options, you pick option 2 ...
/code go ahead with option 2 but keep the existing log lines in place
Real /ask response captured against a deliberately broken divide() function (token cost: 247 sent, 109 received, $0.00079 via OpenRouter Haiku 4.5):
$ aider --message "/ask What is the bug in divide()?" calculator.py
The function will raise a `ZeroDivisionError`.
To fix it, you should add a check:
def divide(a, b):
if b == 0:
raise ValueError("Cannot divide by zero")
return a / b
Or handle it another way depending on your use case.
Tokens: 247 sent, 109 received. Cost: $0.00079 message, $0.00079 session.
Architect mode
Architect mode runs two models per turn. A planner proposes the change in plain language, an editor applies it. Best for refactors that touch more than two files. A typical pairing:
aider --architect \
--model anthropic/claude-opus-4-7 \
--editor-model anthropic/claude-sonnet-4-6 \
--auto-accept-architect
The two-pass design measurably improves quality on real-world refactors and usually saves money over running the architect model alone for the entire task. The editor model emits the structured diffs, freeing the architect from format constraints.
Slash commands inside Aider
43 in-chat commands as of 0.86.x, captured exactly from the official reference and validated against a live install. Memorise the ones marked with a star, the rest are reachable by typing / and tabbing.
| Command | Purpose |
|---|---|
/add <files> * | Add files to the chat (Aider can edit them). |
/drop [files] * | Remove files from the chat. No args drops everything. |
/ls | List files currently in the chat. |
/read-only <files> * | Add files for reference but block edits. |
/clear | Clear the visible chat history. |
/reset | Drop all files and clear history. |
/tokens * | Print token usage for the current chat. |
/cost | Show the running session cost. |
/code * | Switch to code mode (or run one prompt in code mode). |
/architect * | Switch to architect mode. |
/ask * | Switch to ask mode (read-only). |
/chat-mode <name> | Generic mode switcher. |
/context | Enter context mode. |
/model <name> * | Switch the main model on the fly. |
/models <query> | Search the available models list. |
/editor-model <name> | Switch the editor model. |
/weak-model <name> | Switch the weak model. |
/think-tokens N | Set thinking-token budget per turn. |
/reasoning-effort LEVEL | Set reasoning effort for compatible models. |
/diff * | Show the diff Aider just wrote. |
/undo * | Revert the last commit Aider made. |
/git <cmd> | Run a git command without leaving the agent. |
/commit [msg] | Commit dirty changes manually. |
/run <cmd> * | Run a shell command and feed the output into the chat. Alias: !. |
/test [cmd] | Run the configured test command. Aider sees the output. |
/lint | Run the configured lint command. |
/web <url> | Fetch a URL and add the rendered text to the chat. |
/voice | Voice input via Whisper. Requires portaudio. |
/paste | Paste image or text from the clipboard. |
/copy | Copy the last assistant reply to the clipboard. |
/copy-context | Copy chat context as markdown. |
/load PATH | Run a saved /command script. |
/save PATH | Save the current session as a replayable script. |
/multiline-mode or /ml | Toggle multi-line input. |
/vim | Toggle Vim key bindings. |
/edit or /editor [cmd] | Open $EDITOR for a long prompt. |
/map | Print the current repo map. |
/map-refresh | Force a repo-map refresh now. |
/settings | Print effective settings. |
/ok | Shorthand approval (used in Architect mode). |
/report | Open a pre-filled GitHub issue with anonymised diagnostics. |
/help | Aider answers questions about itself. |
/quit or /exit | Exit cleanly. |
Files, repo map, and context
Aider always sends three things to the model: the files in the chat (full contents), the repo map (skeleton of every other file), and the conversation history. Tune each lever based on repo size and budget.
/add and /drop discipline
Smaller chats run faster, cost less, and produce sharper edits. Add files when you need them, drop them when done:
/add src/auth/*.py
/add tests/auth/test_login.py
# After the change is in
/drop tests/auth/test_login.py
/read-only for reference docs
/read-only docs/api-spec.md
/read-only ../external-lib/v3/types.d.ts
Repo map tuning
Inspect what the model sees with aider --show-repo-map. Real output from a 2-file test repo:
$ aider --show-repo-map
Here are summaries of some files present in my git repository.
Do not propose changes to these files, treat them as *read-only*.
If you need to edit any of these files, ask me to *add them to the chat* first.
README.md
calculator.py:
│def add(a, b):
⋮
│def divide(a, b):
⋮
Default budget is 4096 tokens with auto-refresh. Raise to --map-tokens 8192 on a sprawling monorepo, lower to 0 on a tiny repo to save tokens.
aider --map-tokens 4096 --map-refresh auto
/map # inspect what the model sees inside a session
/map-refresh # rebuild after big file moves
Git integration and atomic commits
Aider commits after every successful edit by default. Each commit message is generated by the weak model and the agent is recorded as the committer. The defining workflow benefit: every change becomes a reviewable, revertable git commit:
$ git log --oneline -5
a3f1c2d feat: Add input validation to registration form
b7e4a1f refactor: Extract email parsing into utility module
c9d2e3a fix: Handle null case in user profile serialization
Commit-related flags
# Disable auto-commits for the session
aider --no-auto-commits
# Commit existing dirty changes before Aider edits
aider --dirty-commits
# Stop trusting Aider with author attribution
aider --no-attribute-author --no-attribute-committer
# Use Co-authored-by trailer instead (default)
aider --attribute-co-authored-by
# Skip git entirely (no repo, no commits, no diffs)
aider --no-git
# Run pre-commit hooks (off by default)
aider --git-commit-verify
Standalone –commit mode
Wrote some code by hand and want an LLM-generated commit message? Run Aider in commit-only mode:
# Stage your changes first, then
aider --commit \
--weak-model openrouter/anthropic/claude-haiku-4.5 \
--no-show-release-notes
Undo and diff loops
> refactor src/auth/login.py to use bcrypt instead of argon2
... edits applied, commit abc123
/diff # what changed
/undo # back out the commit
> refactor src/auth/login.py to use bcrypt, but keep the existing rate-limiter intact
–apply for replaying an edit
Aider’s edit format is plain-text SEARCH/REPLACE blocks. Save one to a file, replay it later with --apply. Validated end-to-end on macOS with the diff below:
# sample.diff
calculator.py
<<<<<<< SEARCH
def add(a, b):
return a + b
=======
def add(a, b):
"""Add two numbers."""
return a + b
>>>>>>> REPLACE
$ aider --apply sample.diff --no-auto-commits
calculator.py
Applied edit to calculator.py
Pair with --dry-run to see what the apply would change without writing files. Verified output:
$ aider --dry-run --apply sample.diff
calculator.py
Did not apply edit to calculator.py (--dry-run)
Use --apply-clipboard-edits to read the SEARCH/REPLACE block straight from the system clipboard, useful when you copy edits from a chat.
Linting and testing in the loop
Aider can run your linter and test suite after every edit and feed the output back into the chat. The “self-healing” loop: model edits, lint fails, model fixes, tests pass.
# Per-language lint commands
aider \
--auto-lint \
--lint-cmd "python: ruff check --fix" \
--lint-cmd "javascript: eslint --fix" \
--lint-cmd "go: golangci-lint run --fix"
# Test command Aider iterates against
aider \
--auto-test \
--test-cmd "pytest -x --tb=short"
Inside a session you can trigger the same flow on demand:
/lint
/test
/test pytest tests/test_auth.py -v
Standalone modes also work: aider --lint --no-auto-commits lints and fixes existing files then exits, aider --test --test-cmd pytest runs the test suite, fixes failures, and exits.
Watch-files mode for IDE-style flow
--watch-files turns Aider into a passive sidecar. Edit any file in your editor, append a special AI! or AI? marker, save, Aider picks it up automatically.
aider --watch-files
Marker placement (works across syntaxes: #, //, --, <!--):
def calculate_tax(price, rate): # validate inputs, raise on negatives. AI!
return price * rate
Save. Aider detects the marker, reads context, makes the change, commits, clears the marker. Use AI? for “explain this” rather than “edit this”. Stay in your editor; Aider works asynchronously.
Browser UI
aider --browser
# or
aider --gui
Streamlit-based UI on http://127.0.0.1:8501. Same model, same files, same slash commands, just rendered in a browser. Useful when sharing a session over a remote desktop or pairing with someone watching.
Voice and image input
# Voice input
sudo apt install -y portaudio19-dev # Ubuntu / Debian
brew install portaudio # macOS
aider --voice-language en
> /voice
> (speak your prompt)
# Paste a screenshot from the clipboard
aider --model anthropic/claude-sonnet-4-6
> /paste
> explain this error in the screenshot
Headless and CI mode
The --message and --message-file flags drive non-interactive runs. Combine with --yes-always for unattended pipelines:
# One-shot CI fix
aider \
--message "fix every failing pytest in tests/" \
--yes-always \
--auto-test --test-cmd "pytest -x" \
--no-show-release-notes
# Apply a precomputed prompt file
aider --message-file .ci/upgrade-django.txt --yes-always
# Replay a saved /command script (deterministic session)
aider --load .aider/commands/refactor-auth.txt
Real Q&A captured during validation, against a 2-file test repo via OpenRouter Claude Haiku 4.5:
$ aider --model openrouter/anthropic/claude-haiku-4.5 \
--no-stream --no-show-release-notes --no-auto-commits --yes-always \
--message "What does the divide function do? One sentence." \
calculator.py
Aider v0.86.2
Main model: openrouter/anthropic/claude-haiku-4.5 with diff edit format
Weak model: openrouter/anthropic/claude-haiku-4-5
Git repo: .git with 2 files
Repo-map: using 4096 tokens, auto refresh
Added calculator.py to the chat.
The `divide` function takes two numbers as arguments and returns the result of
dividing the first number by the second.
Tokens: 2.8k sent, 27 received. Cost: $0.0029 message, $0.0029 session.
Caching and history
Prompt caching is a major cost lever on Anthropic and OpenAI. Turn it on, then keep the cache warm during pauses (Anthropic’s TTL is 5 minutes; the keep-alive pings extend it):
aider --cache-prompts --cache-keepalive-pings 12
History files default to .aider.input.history and .aider.chat.history.md at the repo root. The chat history is human-readable Markdown, easy to grep:
grep -A4 "refactor login" .aider.chat.history.md
aider --restore-chat-history # default false
aider --no-restore-chat-history # explicit blank start
Aliases and the model metadata file
Long model names get tedious. Define aliases in the config file:
# .aider.conf.yml
alias:
- "sonnet:openrouter/anthropic/claude-sonnet-4.6"
- "opus:openrouter/anthropic/claude-opus-4.7"
- "fast:openrouter/anthropic/claude-haiku-4.5"
- "g25:openrouter/google/gemini-2.5-pro"
- "local:ollama_chat/qwen2.5-coder:32b"
Then pick from the CLI:
aider --model sonnet
aider --model opus --weak-model fast --editor-model sonnet
For non-default models or self-hosted endpoints define metadata in .aider.model.metadata.json at the repo root or $HOME:
{
"openai/local-llama": {
"max_tokens": 8192,
"max_input_tokens": 32000,
"input_cost_per_token": 0,
"output_cost_per_token": 0,
"litellm_provider": "openai",
"supports_function_calling": false
}
}
Debug and introspection commands
Three flags exit immediately after printing internal state. Useful when something is off:
# What does the model see in the repo map?
aider --show-repo-map
# What system prompt does Aider build?
aider --show-prompts
# Real first chunk captured on macOS:
SYSTEM Act as an expert software developer.
SYSTEM Always use best practices when coding.
SYSTEM Respect and use existing conventions, libraries, etc that are already
SYSTEM present in the code base.
...
# Will the local Aider start cleanly without doing anything?
aider --exit
Upgrading and version checks
# Verify the install
aider --version
# Output: aider 0.86.2
# Check for a new release (no install)
aider --just-check-update
# Upgrade in place. Real output captured:
$ aider --upgrade
Installing: ... -m pip install --upgrade --upgrade-strategy only-if-needed aider-chat
Installation complete.
Re-run aider to use new version.
# Try the bleeding edge
aider --install-main-branch
Common errors and fixes
Error: “litellm.AuthenticationError”
Provider key is missing or wrong. Verify the key is exported, the env var name matches the provider (ANTHROPIC_API_KEY, OPENAI_API_KEY, GEMINI_API_KEY, OPENROUTER_API_KEY), and the .env file is in the repo root that Aider runs from.
Error: “Failed to build numpy”
Shows up when pipx install aider-chat picks a Python that the pinned NumPy refuses to compile against (notably Python 3.14). The fix is either uv tool install aider-chat (which selects a compatible Python automatically) or the aider-install bootstrapper.
Warning: “Unknown context window size and costs”
The model name is not in LiteLLM’s metadata table. Aider still routes the request, but it cannot show accurate token costs. Add an entry in .aider.model.metadata.json or pass --no-show-model-warnings.
Issue: portaudio missing on Linux or macOS
/voice requires the system PortAudio library. Install it with sudo apt install -y portaudio19-dev on Debian/Ubuntu, sudo dnf install -y portaudio-devel on Rocky/AlmaLinux/Fedora, or brew install portaudio on macOS before launching Aider.
Error: “OpenRouter authentication did not complete”
Aider tried to open a browser-based OAuth flow on a headless box. Either set the provider key directly (OPENROUTER_API_KEY in .env) or pass --api-key openrouter=<key>.
Aider vs Claude Code vs Codex CLI vs Gemini CLI vs OpenCode
- Aider: git-native, multi-provider, repo-map-aware, command-rich, atomic per-edit commits. Best when you want fine-grained control and provider flexibility.
- Claude Code: deepest agent ecosystem, hooks, skills, plugins, MCP. See the Claude Code cheat sheet.
- Codex CLI: tight focus, OpenAI-only, very strong at short surgical refactors. See the Codex CLI cheat sheet.
- Gemini CLI: free OAuth tier, 1M-token context, custom TOML commands. See the Gemini CLI cheat sheet.
- OpenCode: open-source TUI, server-mode native. See the OpenCode CLI cheat sheet.
- For the multi-tool comparison, see OpenCode vs Claude Code vs Cursor.
Frequently asked questions
Where is the Aider config file?
Aider searches for .aider.conf.yml in the git repo root, then the current working directory, then $HOME. The first one found wins. Pass -c PATH to override entirely.
How do I disable auto-commits?
Pass --no-auto-commits on the command line, or set auto-commits: false in .aider.conf.yml. Aider will still track edits, you just commit yourself with /commit or external git.
What is architect mode in Aider?
Architect mode runs two models per turn. A planner model proposes the change in plain language, an editor model applies the change to files. Useful for larger refactors where structured output and reasoning come from different model strengths. The two-pass design measurably improves quality and usually saves money over running the architect model alone.
How do I use Aider with Ollama?
Run ollama serve, pull a coder-tuned model with ollama pull qwen2.5-coder:32b, then launch Aider with aider --model ollama_chat/qwen2.5-coder:32b. Pair with the Ollama commands cheat sheet for model management.
How do I use Aider with OpenRouter?
Set OPENROUTER_API_KEY in .env, then prefix every model with openrouter/: aider --model openrouter/anthropic/claude-sonnet-4.6. One key gives you Anthropic, OpenAI, Google, DeepSeek, Mistral, and dozens more, validated working in this guide.
Can Aider run in CI?
Yes. Use --message for a one-shot prompt, --yes-always to auto-confirm, --auto-test --test-cmd "pytest" for self-healing test runs, and --no-show-release-notes to keep logs clean. Token cost and a session-end summary print to stdout so you can capture them in your CI logs.
Does Aider support MCP servers?
Not as of Aider 0.86.x. MCP support is on the roadmap. For workflows that depend on MCP today, Claude Code, Cursor, and Cline are better fits.
Keep this open while you work
Aider’s surface keeps growing release after release. When a new version ships check the freshness block at the top of this page, then re-read the section that changed. Pair this with the Aider setup guide for first-time install, the Claude Code cheat sheet if you alternate between agents, and the Gemini CLI cheat sheet when you want to compare notes.