Skip to main content

Agent Plugins

Bossanova starts coding-agent sessions through agent plugins. Each plugin owns one CLI subprocess inside the session worktree, while bossd owns worktree creation, repo setup, PR polling, and plugin dispatch.

Bundled plugins

AgentPluginCLIStatus
Claudebossd-plugin-claudeclaudeAvailable
Codexbossd-plugin-codexcodexAvailable
OpenCodebossd-plugin-opencodeopencodeAvailable

Install the matching CLI

Install and authenticate the CLI for the agent you intend to use:

  • Claude Code: install from claude.ai/download, then confirm claude works in a terminal.
  • OpenAI Codex CLI: install from the OpenAI Codex CLI guide, then confirm codex works in a terminal.
  • OpenCode: install from opencode.ai, then confirm opencode works in a terminal.

Bossanova does not log in to provider accounts for you. The plugin shells out to the local CLI, so any provider authentication, approvals mode, model choice, or account policy comes from that CLI's own configuration.

Pick the default agent

Unattended sessions:

{
"default_agent": "codex"
}

Use claude to make Claude Code the default, or codex to make OpenAI Codex CLI the default. The daemon refuses to start sessions when no agent plugin is loaded.

Verify plugins are loaded

Run:

boss repair doctor

If session start fails with no AgentRunner plugin loaded, confirm the plugin binary sits next to bossd or in the Homebrew plugin directory:

which bossd
which bossd-plugin-claude
which bossd-plugin-codex
which bossd-plugin-opencode

Then restart bossd and run the doctor again.

OpenCode

The OpenCode plugin (bossd-plugin-opencode) drives the OpenCode CLI. This slice targets opencode v1.18.3.

Routing

bossd routes a session to the OpenCode plugin purely by the session's agent name matching the plugin's GetInfo name, opencode. There is no per-agent switch or hardcoded allow-list — the dispatcher resolves the free-form agent name against the registry of loaded plugins keyed by their reported names. Set opencode as the default:

{
"default_agent": "opencode"
}

or choose OpenCode per session; the dispatcher resolves it with no extra configuration.

Invocation

For unattended runs the plugin drives the CLI headlessly with opencode run --format json …. The --format json flag makes OpenCode emit a JSON event stream that the plugin parses.

Interactive chats launch the OpenCode TUI directly. A new chat lets OpenCode create its own ses_* identifier; a resumed chat uses opencode --session <ses_id>. Boss session context and any initial user input are delivered as the first user turn through --prompt, which OpenCode submits on launch.

MCP servers are the repository's to declare, through whatever mechanism the harness natively supports — bossd configures none of them for any agent, so OpenCode is no different from claude or codex here. Its TUI status polling does remain limited: question and working-state detection do not yet parse OpenCode's pane grammar.

Permission posture

The plugin uses --auto as its default permission posture. --auto grants the autonomous approvals the orchestrator needs while retaining OpenCode's own guardrails, so it is the documented default.

OpenCode also exposes --dangerously-skip-permissions as an undocumented fuller-bypass alternative that removes those guardrails. It is intentionally not the default and is mentioned here only so operators who explicitly want it know it exists.

Debugging session state

OpenCode persists session state in a SQLite store outside the worktree. Operators can locate that database for debugging with:

opencode db path

Upstream rename

The OpenCode project moved from sst/opencode to anomalyco/opencode. Its documentation lives at opencode.ai.