Customizing OpenCode
Configure OpenCode behavior through config files, agents, commands, and extensions.
Config File Locations
Location Path Purpose
Global ~/.config/opencode/opencode.json
User-wide preferences
Project ./opencode.json
Project-specific settings
Custom $OPENCODE_CONFIG env var Override path
Precedence (later overrides earlier): Remote .well-known/opencode < Global < Custom < Project
Quick Reference
Task Where Reference
Set theme, model, autoupdate opencode.json
config-schema.md
Define specialized agents .opencode/agents/*.md or config agents.md
Create slash commands .opencode/commands/*.md or config commands.md
Add external tools via MCP opencode.json mcp section mcp-servers.md
Write custom tool functions .opencode/tools/*.ts
custom-tools.md
Extend with plugins/hooks .opencode/plugins/*.ts or npm plugins.md
Control tool access opencode.json permission section permissions.md
Customize keyboard shortcuts opencode.json keybinds section keybinds.md
Change colors/appearance opencode.json theme or custom JSON themes.md
Directory Structure
~/.config/opencode/ # Global config ├── opencode.json ├── AGENTS.md # Global rules ├── agents/ # Global agents ├── commands/ # Global commands ├── plugins/ # Global plugins ├── skills/ # Global skills ├── tools/ # Global custom tools └── themes/ # Global custom themes
.opencode/ # Project config (same structure) ├── agents/ ├── commands/ ├── plugins/ ├── skills/ ├── tools/ └── themes/
When to Use What
Need Solution
Change model/theme for all projects Global opencode.json
Project-specific agent behavior Project .opencode/agents/
Reusable prompt templates Commands (.opencode/commands/ )
External service integration MCP servers
Custom logic the LLM can call Custom tools
React to OpenCode events Plugins
Restrict dangerous operations Permissions
Variable Substitution
Use in any config value:
{ "model": "{env:OPENCODE_MODEL}", // Environment variable "instructions": ["{file:./rules.md}"] // File contents }
Rules (AGENTS.md)
Project instructions loaded into LLM context:
File Scope
./AGENTS.md
Project (traverses up to git root)
~/.config/opencode/AGENTS.md
Global
instructions array in config Additional files/globs
{ "instructions": ["CONTRIBUTING.md", "docs/*.md"] }
Docs
Full documentation: https://opencode.ai/docs/config/