A runner implementation is code (claude-code, codex-cli, ollama,
mock). A runner profile is one named configuration of an
implementation. Several profiles can share an implementation:
claude-code (enabled), codex-default (disabled), gemini-default
(disabled, v0.6.1), ollama-local (disabled), openai-compatible-local
(disabled, v0.6.1), antigravity (disabled, experimental, v0.6.1), and
mock (enabled) always exist — configuration entries override them.
New-provider profiles are DISABLED until you enable them explicitly;
nothing is ever silently enabled or selected, and migration never enables
a provider profile. See gemini-cli-runner.md,
openai-compatible-runner.md, and
antigravity-cli-runner.md for the v0.6.1
profile fields.
- Profile names are unique; unknown runner implementations are rejected.
- Commands are
{ "executable": ..., "args": [...] }— a shell command string is rejected (nothing is ever shell-interpolated). - Claude profiles keep the existing v0.3–v0.5 field shape (
commandexecutable string +commandArgs); migration preserves them unchanged. - Profiles never store credentials; credential-looking keys are rejected by the schema.
specbridge runner show <profile>prints the redacted configuration, declared and detected capabilities, operation compatibility, and the security boundary.
Per-profile options: executable or endpoint, model, timeout, sandbox mode
(codex: read-only narrows task execution; it can never broaden), output
limits, and provider-safe extras. See
codex-cli-runner.md and
ollama-runner.md.