add-dir-opencode
the add-dir command from claude code but for opencode
opencode-add-dir
Add working directories to your OpenCode session — inspired by Claude Code's /add-dir command.
When you need an agent to read, edit, or search files outside the current project, this plugin grants access without permission popups.
Quick Start
Add to your opencode.json:
{
"plugin": ["opencode-add-dir"]
}
Restart OpenCode. Done.
Alternative: setup CLIbunx opencode-add-dir-setup
Automatically adds the plugin to your global opencode.json.
git clone https://github.com/kuzeofficial/add-dir-opencode.git
cd add-dir-opencode
bun install && bun run deploy
Bundles to ~/.config/opencode/plugins/add-dir.js.
Commands
/add-dir /path/to/directory # Add for this session
/add-dir /path/to/directory --remember # Persist across sessions
/list-dir # Show added directories
/remove-dir /path/to/directory # Remove a directory
How It Works
The plugin uses a layered approach to handle permissions across all sessions, including subagents:
| Layer | When | Scope |
|---|---|---|
| Config hook | Startup | Injects external_directory: "allow" rules for persisted dirs into all agents |
| Session permission | /add-dir |
Sets external_directory: true on the current session |
| tool.execute.before | Every file tool | Detects subagent sessions accessing added dirs, grants permission before execution |
| Event auto-approve | Permission popup | Catches any remaining external_directory requests and auto-approves via SDK |
Context Injection
If an added directory contains AGENTS.md, CLAUDE.md, or .agents/AGENTS.md, the content is automatically injected into the system prompt.
Persistence
Directories added with --remember are stored in:
~/.local/share/opencode/add-dir/directories.json
These are loaded at startup and injected into agent permission rules via the config hook.
Development
bun install
bun test # 33 tests
bun run typecheck # Type check
bun run build # Build npm package
bun run deploy # Bundle to ~/.config/opencode/plugins/
Project Structure
src/
├── index.ts # Entry point (default export)
├── plugin.ts # Hooks + commands
├── state.ts # Persistence + path utils
├── validate.ts # Directory validation
├── permissions.ts # Session grants + auto-approve
├── context.ts # AGENTS.md injection
└── types.ts # Shared type definitions
Debugging
opencode --print-logs 2>debug.log
grep "\[add-dir\]" debug.log
Limitations
- Directories added mid-session (without
--remember) rely on session-level permissions and the event hook auto-approve. The first access by a subagent may briefly show a permission popup before auto-dismissing. - The
permission.askplugin hook is defined in the OpenCode SDK but not invoked in the source — this plugin works around it usingtool.execute.beforeand event-based auto-approval.
License
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi