8.5 KiB
Claude (Anthropic) — opencode Best Practices
⚠️ Paid service. Claude requires an Anthropic API key (usage-based billing) or a Claude Pro/Max subscription. You are charged per token by Anthropic.
Reference: Anthropic provider docs | Anthropic | Pricing
Quick Start (for new users)
This project runs opencode in Docker with the web interface at http://localhost:PORT.
- Prerequisites: An Anthropic account with billing enabled and an API key, or a Claude Pro/Max subscription
- Cost: Claude is usage-based. Rates vary by model — Sonnet is more affordable, Opus is premium. Set spending limits in the Anthropic console.
- First run: Use
/initto generate anAGENTS.md— opencode analyzes your project structure, frameworks, and patterns, then writes a conventions file so future sessions know your code style, testing approach, naming conventions, and file organization - Undo: Run
/undoto revert the last change. Run it multiple times to undo further back. Use/redoto restore. All changes are tracked via git-style snapshots within the session.
Provider Configuration
There is no
opencode.jsonconfig needed for the built-in Anthropic provider. Just run/connectand select Anthropic, then authenticate.
The anthropic provider is built into opencode. After authenticating via /connect, all Claude models appear in the model picker.
Authentication options:
- Claude Pro/Max — opens your browser to authorize with your Anthropic account (OpenCode uses your subscription tokens)
- API key — paste a key from console.anthropic.com
// Optional: explicitly set the model or configure thinking budget
{
"$schema": "https://opencode.ai/config.json",
"model": "anthropic/claude-sonnet-4-5-20250929",
"permission": {
"edit": "ask",
"bash": "ask"
}
}
Permission values: "allow" (runs automatically), "ask" (prompts for approval), "deny" (disabled entirely). You can also use glob patterns for fine-grained control — e.g. "grep *": "allow", "git push": "ask".
Model Tiers
Reference: Anthropic models
| Model | Best for | Cost |
|---|---|---|
| Claude Sonnet 4.5 | General development — best balance of speed, quality, and cost | Moderate |
| Claude Opus 4.5 | Complex reasoning, large refactors, architecture decisions | Highest |
| Claude Haiku 4.5 | Quick tasks, planning, exploration | Lowest |
Thinking / Reasoning
Claude supports extended thinking for complex tasks. Configure via model options:
{
"provider": {
"anthropic": {
"models": {
"claude-sonnet-4-5-20250929": {
"options": {
"thinking": {
"type": "enabled",
"budgetTokens": 16000
}
}
}
}
}
}
}
Built-in thinking variants: high (default), max (maximum budget). Cycle between them with the variant keybind.
Capabilities
- 200k token context window — can handle very large files and long conversations
- Excellent tool-calling — rarely misses complex multi-tool workflows
- Code quality — among the best for code generation and refactoring
- Slower than smaller models for simple tasks due to reasoning overhead
Tools (Built-in)
Reference: Tools docs
Tools are functions the LLM can call to interact with your codebase — they're how opencode reads files, searches code, runs commands, and makes changes. Each tool has a specific purpose:
read— Read files. Prefer this overbash cat(structured output, line numbers).grep— Search file contents by regex. Faster and more targeted thanbash grep.glob— Find files by pattern (e.g.,**/*.tsx). Use instead ofbash find.edit— Modify existing files via exact string replacement. Preferred for small changes.write— Create new files or overwrite existing ones.bash— Run arbitrary shell commands (git, npm, docker, etc.).skill— Load reusable instructions from aSKILL.mdfile.task— Delegate work to a subagent for parallel execution.webfetch/websearch— Fetch URLs or search the web (docs lookups, research).question— The agent asks you for clarification when instructions are ambiguous.
Custom Tools & MCP Servers
Reference: Custom Tools | MCP Servers
- Custom tools: Place TypeScript files in
.opencode/tools/. The filename becomes the tool name. Can invoke scripts in any language (Python, shell, etc.). - MCP (Model Context Protocol) — an open standard for connecting LLMs to external tools and services. Configure MCP servers in
opencode.jsonto give opencode access to databases, APIs, file systems, etc.
// Example MCP server for a database
{
"mcp": {
"my-db": {
"type": "stdio",
"command": "node",
"args": ["path/to/mcp-server.js"]
}
}
}
Subagents
Reference: Agents docs
Invoke with @name in your prompt. Subagents run in separate sessions and can work in parallel:
@explore— Fast, read-only codebase explorer. Use case: "Find all places where the auth middleware is applied" — returns file paths and line numbers, no file changes.@general— Full subagent with all tools. Use case: "Refactor these three files in parallel" — fires multiple independent agents simultaneously, each handling one file.@scout— Read-only dependency researcher. Clones repos into a managed cache, inspects library source.
Example — refactoring with parallel subagents:
"Extract the validation logic from controllers into a shared middleware. @general handle /users, @general handle /orders, @general handle /products"
Create custom subagents via .opencode/agents/ (markdown files) or in opencode.json:
{
"agent": {
"review": {
"description": "Reviews code without making changes",
"mode": "subagent",
"permission": { "edit": "deny" },
"model": "anthropic/claude-sonnet-4-5-20250929"
}
}
}
Skills
Reference: Skills docs
Skills are reusable instruction files placed in .opencode/skills/<name>/SKILL.md. The agent sees them in the skill tool description and loads them on-demand when a task matches.
---
name: git-release
description: Create consistent releases and changelogs
---
Instructions for creating releases...
Permissions
Reference: Permissions docs
Control tool access globally or per-agent:
"allow"— runs without asking"ask"— prompts for approval"deny"— disabled entirely
Permissions support glob patterns for fine-grained control over specific tools or commands.
AGENTS.md
After running /init, opencode generates an AGENTS.md in your project root. This file captures your project's conventions and is read at the start of every session so the agent understands:
- Code style and naming conventions
- Framework and library choices
- Testing approach and commands
- File organization and patterns
- Any project-specific rules
Keep it committed to git — it's the single source of truth for how the agent should behave in your project.
Prompting Tips (for Claude)
- Skip pleasantries. Every "please", "thanks", or "could you" consumes tokens and adds cost. Claude responds best to direct, imperative commands: "Refactor this function" not "Could you please help me by refactoring this function?"
- Use thinking variants when you need deeper reasoning — complex refactors, architecture decisions, debugging
- Use Haiku or default for quick tasks — grep searches, minor edits, exploration. No need to pay Opus rates for simple work.
- 200k context means you can reference large files, but prefer targeted reads with line ranges
- If Claude gets stuck,
/undoand add more context or break the task into smaller steps - Reference files with
@filenamefor fuzzy search - Use Plan mode first for multi-file changes, review the plan, then build
- Attach images via drag-and-drop for UI/design context
- Set spending limits in the Anthropic console to avoid surprise bills