Agent holds¶
sase agent hold¶
An agent hold is a durable, reverse-wait admission barrier: while it is active, matching
agents stay WAITING or QUEUED instead of starting, and matching procs that have not been
dispatched yet stay pending. sase agent hold is the standalone CLI for the hold store
that the %hold directive also
describes in prompt text. The CLI and directive are available without a feature flag.
Use the CLI when you need to inspect, release, or arm a hold outside a launch prompt.
sase agent hold create -n planner -t nightly # block one name plus a tribe
sase agent hold create -f -s host -T 45m # fence every later launch on this host
sase agent hold run -- just check-full # quiesce while one command runs
sase agent hold list -j
sase agent hold show -k cli:myhost:12345
sase agent hold release # release this shell's or agent's own hold
create requires at least one selector: positional SELECTOR arguments (a name, or an
@tribe, expanded the same way as %hold names and tribes), repeatable -n/--name (an
agent, agent session, clan, workflow, or named proc name; role-suffixed names stay
exact), -t/--tribe (with or without @), and -H/--hood, plus -f/--future (agents
and undispatched procs submitted after the hold is armed) and -p/--pending (freeze the
WAITING/QUEUED agents in scope right now; it does not capture undispatched procs or
later launches). -s/--scope is project (the default, inferred from the current
checkout or agent) or host. -T/--ttl accepts bare seconds or a single-unit duration
such as 90s, 45m, or 2h (compound values like 1h30m are accepted only by
%hold(ttl=...), not by -T); it defaults to agent_hold_default_ttl (2h) and may
not exceed agent_hold_max_ttl (12h); see
agent hold limits. Arming,
releasing, and TTL expiry post notifications; the expiry notice includes the exact
boundary. sase's TUI Admin Center lists and releases active holds.
Each armer owns one hold. Inside an agent run the armer is that agent (agent:<name>),
and the hold is dropped once the agent's session settles. From a plain shell the armer
is cli:<machine>:<pid> anchored to the parent shell, so the hold lasts until it is
released, its TTL expires, or that shell exits. sase agent hold release releases the
calling agent's or shell's own hold unless -k/--key names another armer key, and exits
1 when no such hold is active. sase agent hold show -k KEY prints one hold,
including its frozen pending artifact directories and launch-time capture summary (-j
prints the raw record), and exits 2 when the key has no active hold. Older records
without that evidence display “capture not recorded.”
sase agent hold run [selectors] -- COMMAND arms a hold anchored to the run process,
runs COMMAND, releases the hold on success, failure, or interruption, and exits with
the command's status. With no selector flags it defaults to -f -p, the selector-free
quiesce recipe. Holds whose armer has died or whose TTL has passed are pruned whenever
the store is read.
_[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.