Skip to content

Prompts and tools configuration

Macros, named tools, plugins, hooks, and mentor selection.

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.

file_hooks

Config key Type Default Allowed values Description
file_hooks array [] — Non-gating commands matched to repository file events.
file_hooks[] object not set — —
file_hooks[].use string not set — Installed file-hook provider id to use as the base template, qualified as <plugin>@<id> ('builtin' or an installed distribution name).
file_hooks[].name string not set — Unique lowercase slug shown in notifications and file-hook listings.
file_hooks[].description string not set — Optional human-readable purpose for the hook.
file_hooks[].command string not set — Shell command whose final argument is the matched file path.
file_hooks[].filters object not set — Optional event-selection criteria; omitted or empty means unrestricted outside project-local auto-scoping.
file_hooks[].filters.projects array not set — Optional user-facing project names; omitted means every project.
file_hooks[].filters.projects[] string not set — —
file_hooks[].filters.sidecars array not set — Optional sidecar role names; omitted means any repository.
file_hooks[].filters.sidecars[] string not set — —
file_hooks[].filters.path_globs array not set — Optional repo-relative path globs, including !-prefixed exclusions.
file_hooks[].filters.path_globs[] string not set — —
file_hooks[].filters.agent_name_globs array not set — Optional SASE agent-name globs matched against the agent that produced the event, including !-prefixed exclusions.
file_hooks[].filters.agent_name_globs[] string not set — —
file_hooks[].filters.ops array not set — Optional file operations; omitted means all operations.
file_hooks[].filters.ops[] string not set "ADD", "MODIFY", "REMOVE" —
file_hooks[].filters.causes array not set — Optional non-user event causes this hook accepts in addition to user commits.
file_hooks[].filters.causes[] string not set — —
file_hooks[].filters.producers array not set — Optional file-hook producer identities; omitted means every producer.
file_hooks[].filters.producers[] string not set "artifact", "commit", "sdd", "finalizer", "dispatch" —
file_hooks[].timeout string not set — Per-run timeout duration (default: 120s).

macro_aliases

Config key Type Default Allowed values Description
macro_aliases object {c, p} (values below) — Aliases for macro references, substituted before any other macro processing (e.g., {"#deploy_notes": "#release-notes"})
macro_aliases.<key> string not set — —

macros

Config key Type Default Allowed values Description
macros object {…} (12 keys; values below) — Reusable text templates that can be referenced in prompts
macros.<key> string | object not set — —
macros.<key>.input array | object not set — Input argument definitions (array or object shorthand)
macros.<key>.input[] object not set — —
macros.<key>.input[].name string not set — The argument name (used for named args like name=value)
macros.<key>.input[].type string "line" "word", "line", "text", "path", "int", "integer", "float", "bool", "boolean", "code", "enum", "agent", "effort", "model", "string" The expected type of the argument value
macros.<key>.input[].default any not set — Default value if argument is not provided
macros.<key>.input[].description string not set — Human-readable input description
macros.<key>.input[].repeatable boolean false — Whether this final positional input consumes all remaining values
macros.<key>.input[].choices array not set — Closed set of allowed values for an enum input. Each item is a string or a {value, label, description} object.
macros.<key>.input[].choices[] string | object not set — —
macros.<key>.input[].choices[].value string not set — Exact value a caller must supply
macros.<key>.input[].choices[].label string not set — Optional display text for the value
macros.<key>.input[].choices[].description string not set — Optional longer help text for the value
macros.<key>.input.<key> string | object not set "word", "line", "text", "path", "int", "integer", "float", "bool", "boolean", "code", "enum", "agent", "effort", "model", "string" Type shorthand (e.g., 'text', 'line')
macros.<key>.input.<key>.type string not set "word", "line", "text", "path", "int", "integer", "float", "bool", "boolean", "code", "enum", "agent", "effort", "model", "string" The expected type of the argument value
macros.<key>.input.<key>.default any not set — Default value if argument is not provided
macros.<key>.input.<key>.description string not set — Human-readable input description
macros.<key>.input.<key>.repeatable boolean false — Whether this final positional input consumes all remaining values
macros.<key>.input.<key>.choices array not set — Closed set of allowed values for an enum input. Each item is a string or a {value, label, description} object.
macros.<key>.input.<key>.choices[] string | object not set — —
macros.<key>.input.<key>.choices[].value string not set — Exact value a caller must supply
macros.<key>.input.<key>.choices[].label string not set — Optional display text for the value
macros.<key>.input.<key>.choices[].description string not set — Optional longer help text for the value
macros.<key>.content string not set — Template content with Jinja2 placeholders
macros.<key>.tags string | array not set — Semantic role tags for tag-based macro lookup
macros.<key>.tags[] string not set — —
macros.<key>.snippet boolean | string not set — Opt-in snippet expansion: true for auto trigger word, or a custom trigger string
macros.<key>.description string not set — Human-readable macro description
macros.<key>.skill boolean | array not set — Skill deployment metadata for generated skills
macros.<key>.skill[] string not set — —
macros.<key>.log_skill_use boolean true — Whether the generated skill includes the first-step audit directive that records its own use (default true)

mentor_profiles

Config key Type Default Allowed values Description
mentor_profiles array not set — Mentor profiles define which mentors to apply to which files
mentor_profiles[] object not set — —
mentor_profiles[].profile_name string not set — Unique name for this mentor profile
mentor_profiles[].mentors array not set — List of mentors to apply
mentor_profiles[].mentors[] object not set — —
mentor_profiles[].mentors[].macro string not set — Reference to a macro (e.g., #mentor/aaa)
mentor_profiles[].mentors[].prompt string not set — Inline prompt text for the mentor
mentor_profiles[].mentors[].mentor_name string not set — Name for the mentor
mentor_profiles[].mentors[].role string not set — Description of the mentor's role
mentor_profiles[].mentors[].focus_areas array not set — Specific areas this mentor should focus on during review
mentor_profiles[].mentors[].focus_areas[] object not set — —
mentor_profiles[].mentors[].focus_areas[].focus_name string not set — Unique identifier for this focus area
mentor_profiles[].mentors[].focus_areas[].description string not set — Detailed description of what to look for
mentor_profiles[].file_globs array not set — Glob patterns to match files for this profile
mentor_profiles[].file_globs[] string not set — —
mentor_profiles[].diff_regexes array not set — Regex patterns to match in the diff output
mentor_profiles[].diff_regexes[] string not set — —
mentor_profiles[].amend_note_regexes array not set — Regex patterns to match in the amend note
mentor_profiles[].amend_note_regexes[] string not set — —
mentor_profiles[].first_commit boolean false — Whether to match on the first commit of a Patch
mentor_profiles[].projects array not set — Only match patches belonging to these projects. Auto-populated for local sase/sase.yml profiles.
mentor_profiles[].projects[] string not set — —

metahooks

Config key Type Default Allowed values Description
metahooks array not set — Metahooks intercept failing hooks before the summarize agent runs
metahooks[] object not set — —
metahooks[].name string not set — Unique identifier for this metahook
metahooks[].hook_command string not set — The command that this metahook intercepts
metahooks[].output_regex string not set — Regex pattern to match in the hook output

plugins

Config key Type Default Allowed values Description
plugins object {required} (values below) — Project-declared plugin dependencies. A linked or sidecar checkout is not an install; each entry is checked against distributions in the running environment.
plugins.required array [] — PEP 508 requirement strings that must be installed. Every non-builtin <plugin>@ prefix used anywhere in this project config must name a distribution listed here.
plugins.required[] string not set — —

tools

Config key Type Default Allowed values Description
tools object not set — Project-owned named tool catalog. Read only from the project's sase/sase.yml as complete entries; user, machine, plugin, and builtin layers cannot change execution identity.
tools.<key> object not set — One project-owned named tool. The map key is the tool name.
tools.<key>.argv array not set — Exact argv executed at the project root. Not expanded for shell syntax or environment variables.
tools.<key>.argv[] string not set — —
tools.<key>.description string not set — Human-readable purpose shown by sase tool list.
tools.<key>.stages string "none" "run_silent", "none" Whether run_silent stage producers attach to this tool.
tools.<key>.inputs array not set — Repository-relative glob patterns observed as fingerprint inputs.
tools.<key>.inputs[] string not set — —
tools.<key>.env array not set — Allow-listed environment variable names observed as fingerprint inputs. Secret-like values are redacted in query fields.
tools.<key>.env[] string not set — —
tools.<key>.args string "deny" "allow", "deny" Whether extra arguments after -- may be appended to argv.
tools.<key>.fingerprint object not set — Fingerprint observation spec for a named tool. Empty repos means the current repository at run time.
tools.<key>.fingerprint.repos array not set — Configured repository identities to fingerprint. Empty means the current repository.
tools.<key>.fingerprint.repos[] string not set — —
tools.<key>.fingerprint.toolchain object not set — Bounded toolchain probes: probe name to nonempty argv.
tools.<key>.fingerprint.toolchain.<key> array not set — —
tools.<key>.fingerprint.toolchain.<key>[] string not set — —
tools.<key>.receipt object not set — Opt-in verdict-receipt policy for one named tool. Validated by the Rust core and excluded from the definition digest. accept lists covering verdicts; ttl is a duration at most 2h.
tools.<key>.receipt.accept array not set — Verdicts that count as covered. pass is always accepted even when omitted.
tools.<key>.receipt.accept[] string not set "pass", "no_new_failures" —
tools.<key>.receipt.ttl string not set — Coverage time-to-live. Bare seconds or a number suffixed with s/m/h; at most 2h.
tools.<key>.duration_class string not set "short", "long", "unbounded" Duration class floor for inline-vs-monitor routing. Validated by the Rust core and excluded from the definition digest; unset means short.

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