Skip to content

Agents and runners configuration

Agent launch, completion, capacity, restart, and process-scope settings.

Defaults come from the schema when declared, otherwise from the bundled YAML. An object with listed children is expanded below; {…} and […] summarize compound defaults. A dash means the schema has no finite allowed-value list.

agent_auto_restart

Config key Type Default Allowed values Description
agent_auto_restart object {…} (6 keys; values below) — Controls recovery of agents interrupted by a live update, including quiescence, retry, and storm limits.
agent_auto_restart.enabled boolean true — Master kill switch for automatic update-skew restarts. False disables every automatic path; pending failures are re-surfaced loudly.
agent_auto_restart.quiescence_seconds number 30 — Seconds the managed code tree must stay quiet before the healer relaunches anything.
agent_auto_restart.max_defer_seconds number 1800 — Maximum age of a deferred ledger record before it is declined instead of re-attempted.
agent_auto_restart.pending_resurface_seconds number 600 — Age after which a pending failure with no ledger record is re-surfaced loudly.
agent_auto_restart.storm_max_per_episode integer 12 — Maximum automatic launches per update episode before the storm breaker pauses the feature.
agent_auto_restart.storm_max_per_30m integer 20 — Maximum automatic launches per rolling 30 minutes before the storm breaker pauses the feature.

agent_hold_confirm_capture_threshold

Config key Type Default Allowed values Description
agent_hold_confirm_capture_threshold integer 10 — Pending-capture count above which a launch preview's %hold needs interactive confirmation.

agent_hold_default_ttl

Config key Type Default Allowed values Description
agent_hold_default_ttl string "2h" — TTL applied to sase agent hold create/run when --ttl is omitted. Bare seconds or a number suffixed with s/m/h.

agent_hold_max_ttl

Config key Type Default Allowed values Description
agent_hold_max_ttl string "12h" — Maximum TTL accepted by sase agent hold create/run --ttl. Same duration syntax as agent_hold_default_ttl.

agent_scope_teardown

Config key Type Default Allowed values Description
agent_scope_teardown object {enabled, term_grace_seconds, reaper_min_scope_age_seconds, spare_process_patterns} (values below) — Sweeps leaked processes from agent-owned scopes at runner exit and reaps abandoned scopes.
agent_scope_teardown.enabled boolean true — Whether the runner sweeps leaked processes from its own sase-agent scope at exit and between in-process successor turns.
agent_scope_teardown.term_grace_seconds number 3 — Grace between SIGTERM and SIGKILL when sweeping leaked scope processes.
agent_scope_teardown.reaper_min_scope_age_seconds number 120 — Minimum scope age before the orphaned-scope reaper may sweep it.
agent_scope_teardown.spare_process_patterns array ["^ssh-agent$","^gpg-agent$","^tmux: server$","^ssh: .*\\[mux\\]$"] — Regex patterns (re.search) matching shared daemons the sweep never kills.
agent_scope_teardown.spare_process_patterns[] string not set — —

autonomy

Config key Type Default Allowed values Description
autonomy object {roles} (values below) — Autonomy profile each generated worker role launches with.
autonomy.roles object {epic_phase, epic_land} (values below) — Worker role to autonomy profile mapping.
autonomy.roles.epic_phase string "standard" "manual", "standard", "tale", "epic" Autonomy profile for epic phase agents launched by sase bead work / epic plan approval. E3 will widen values to config profile names.
autonomy.roles.epic_land string "standard" "manual", "standard", "tale", "epic" Autonomy profile for epic land agents. E3 will widen values to config profile names.

finalizers

Config key Type Default Allowed values Description
finalizers object {defaults, required, instances} (values below) — Host-owned finalizer instances selected for SASE agent completion.
finalizers.defaults array ["commit"] — Default finalizer instance IDs selected when no %final directive overrides them.
finalizers.defaults[] string not set — —
finalizers.required array [] — Finalizer instance IDs that cannot be removed by %final.
finalizers.required[] string not set — —
finalizers.instances object {commit} (values below) — Configured finalizer instances keyed by lowercase slug.
finalizers.instances.<key> object not set — —
finalizers.instances.<key>.use string not set — Provider reference such as builtin@commit or distribution@provider.
finalizers.instances.<key>.after array [] — Finalizer instances that must run before this instance.
finalizers.instances.<key>.after[] string not set — —
finalizers.instances.<key>.max_attempts integer 1 — Maximum executor attempts for this finalizer.
finalizers.instances.<key>.refusal string "fail" "fail", "defer" Policy for an upheld deferral: 'fail' ends the turn, 'defer' completes the run with a disclosed dirty tree.
finalizers.instances.<key>.config object {} — Provider-specific trusted configuration.

max_agent_pipe_chain

Config key Type Default Allowed values Description
max_agent_pipe_chain integer 8 — Maximum number of sase pipe hops in one session chain. The original agent is depth 0; each successful pipe increments depth by one and is refused when the next link would exceed this bound.

max_running_agents

Config key Type Default Allowed values Description
max_running_agents integer 10 — Host-wide runner-capacity budget. Normal launches claim 1.0 capacity unit; %queue(weight=...) / %q(w=...) may request non-negative finite weights (%q(w=0) adds no load). Serial sessions share one live claim, while independent clan members and parallel session members each hold their own claim.

runner_slots

Config key Type Default Allowed values Description
runner_slots object {deference_seconds_per_step, deference_max_seconds} (values below) — Priority-based deference for runner-slot waiters, bounded by a maximum delay.
runner_slots.deference_seconds_per_step integer 3 — Seconds a waiter defers per priority step above the default priority of 10.
runner_slots.deference_max_seconds integer 60 — Maximum continuous-eligibility delay for a waiter with priority above the default.

tmux_agent

Config key Type Default Allowed values Description
tmux_agent object {…} (6 keys; values below) — Configuration for launching interactive agent CLIs in a new tmux window
tmux_agent.window_name string "ai" — Base tmux window name. The first window is this name; later ones get a numeric suffix (ai, ai2, ai3, ...).
tmux_agent.bypass_permissions boolean true — Pass each agent CLI's approval-bypass flags. Per-provider overrides win.
tmux_agent.effort string "" "", "off", "none", "minimal", "low", "medium", "high", "xhigh", "max" Reasoning effort applied to launches. Empty follows llm_provider.default_effort; "off" passes no effort flags at all.
tmux_agent.clear_screen boolean true — Run clear in the new window before starting the CLI.
tmux_agent.after_close_command string "" — Optional shell command run after an agent CLI window closes, alongside SASE's own window renumbering. Empty means nothing extra runs.
tmux_agent.providers object {} — Per-provider overrides, keyed by registered provider name.
tmux_agent.providers.<key> object not set — Overrides for one registered agent-CLI provider.
tmux_agent.providers.<key>.enabled boolean true — When false, hide this provider from both tmux Agent surfaces.
tmux_agent.providers.<key>.key string not set — Override the single-key menu shortcut. Empty uses automatic assignment.
tmux_agent.providers.<key>.model string "" — Pin a model for this provider, e.g. "gemini-3.7-flash-high". Empty leaves the CLI's default.
tmux_agent.providers.<key>.effort string "" "", "off", "none", "minimal", "low", "medium", "high", "xhigh", "max" Per-provider reasoning effort. Empty inherits the section default; "off" disables effort flags.
tmux_agent.providers.<key>.args array [] — Extra CLI args appended verbatim to the resolved launch command.
tmux_agent.providers.<key>.args[] string not set — —
tmux_agent.providers.<key>.env object {} — Environment variables set in the new tmux window.
tmux_agent.providers.<key>.env.<key> string not set — —
tmux_agent.providers.<key>.bypass_permissions boolean not set — Override the section-level approval-bypass default for this provider. Omit to inherit.

_[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.