OpenCode provider¶
This page describes how SASE integrates OpenCode for agent invocations.
OpenCode Integration¶
The OpenCodeProvider invokes the opencode CLI tool.
Command Construction¶
opencode run --format json --dangerously-skip-permissions --model <provider/model> --dir <cwd> [extra_args...] <prompt>
The prompt is passed as OpenCode's run [message..] argument without shell
interpolation. Output is streamed as JSONL events; SASE extracts assistant text from
text events, captures errors from error events, and accumulates token counters from
step_finish events when OpenCode reports them.
Model Mapping¶
OpenCode model IDs normally include an upstream provider prefix. Use
%model:opencode/<provider/model> to route a single SASE prompt to a concrete OpenCode
model.
| Tier | Model |
|---|---|
large |
anthropic/claude-sonnet-4-5 |
small |
openai/gpt-5-mini |
Authentication and Config¶
Configure OpenCode through its normal auth and settings flow before using it from SASE.
OpenCode stores auth under its XDG data directory and reads config from its XDG config
directory plus project .opencode config. Use opencode models to inspect the models
available in your configured OpenCode environment.
SASE deploys OpenCode skills under ~/.config/opencode/skills/, which OpenCode scans as
part of its config directory. SASE does not create a shadow OpenCode data/config home in
this first implementation because OpenCode's normal headless run writes session/database
state under its XDG data directory while reading auth/config from the standard
locations.
Environment Variables¶
| Variable | Description |
|---|---|
SASE_LLM_LARGE_ARGS |
Extra CLI args for large tier (generic, preferred) |
SASE_LLM_SMALL_ARGS |
Extra CLI args for small tier (generic, preferred) |
SASE_OPENCODE_PATH |
Path to the OpenCode CLI binary (default: opencode) |
SASE_OPENCODE_LARGE_ARGS |
Extra CLI args for large tier (OpenCode-specific fallback) |
SASE_OPENCODE_SMALL_ARGS |
Extra CLI args for small tier (OpenCode-specific fallback) |
The generic SASE_LLM_*_ARGS variables take precedence over SASE_OPENCODE_*_ARGS.
Timer Display¶
While waiting for a response, a provider_timer("Waiting for OpenCode") spinner is
shown (unless suppress_output is True).
Related¶
- Providers and models — the provider integration overview.
- Models and aliases — model names and tier defaults.
_[project]: A sase project is a named unit of work registered with SASE. _[workspace]: A sase workspace is a numbered clone of a project's primary repo, managed by the workspace store and tracked in that project's registry.json. _[agent]: A sase agent is an agent session or a single agent that does not belong to a session. _[prompt]: A prompt is the text SASE hands to a provider to start an agent turn. _[macro]: A macro is a reusable prompt triggered with #name in agent prompts. _[Patch]: A Patch is SASE's local unit of change. _[bead]: A bead is one tracked work item in SASE's git-native issue tracker. _[plan]: A plan is a persisted, approved artifact recording the intent behind agent work. _[TUI]: The TUI is SASE's terminal interface for running agents and reviewing results. _[epic]: An epic is an executable multi-phase plan run with sase bead work. _[gate]: A sase gate is a durable, command-backed request for one user decision, created when work must pause for the user. _[monitor]: A sase monitor is a monitor turn that runs one long command under a detached supervisor, so the command outlives the agent that started it. *[stitch]: A stitch is the lightweight ordered change record inside a Patch's STITCHES: section.