resolveGatedToolNames
resolveGatedToolNames(
options): readonlystring[]
Defined in: _worktrees/docs-release/gaunt-sloth/packages/core/src/config/shell-policy.ts:965
The LIVE gated set: which bound tools the rung in force actually gates. What a decision is measured against — the tool descriptions the model reads (§4.5) and the rater’s granted-tools summary (§4.4) are both built from this, so neither can tell the model a tool is free while the gate escalates it.
It is NOT what the agent wires into the interrupt. That is
resolveInterruptToolNames, and the two are different sets on purpose: the interrupt is
installed once, at agent init, while /approvals <rung> moves the rung underneath it for the rest
of the session. A set that carried the rung would be frozen at the rung the session started on —
and since the default is assisted, typing /approvals manual would leave exactly the write
tools this design escalates ungated. So the interrupt is wired rung-independently and
GthAgentRunner.decideToolApproval consults isToolGatedAtRung against the LIVE rung.
Derived from the bound toolset, never a hand-written list. A static list of built-ins would
leave MCP, custom and agent-authored tools out — the exact tools with no access class and so the
exact tools the deterministic rungs must escalate. boundToolNames must therefore be the FINAL
toolset the graph is handed, including any tool the graph builder registers itself, which by
definition never appears in the array gsloth passes it.
Order is stable: the shell first, then bound order. Duplicates are collapsed, so a caller may pass overlapping name sources without deduplicating first.
Parameters
Section titled “Parameters”options
Section titled “options”boundToolNames
Section titled “boundToolNames”readonly string[]
gateShell
Section titled “gateShell”boolean
"manual" | "write" | "assisted" | "auto" | "bypass"
Returns
Section titled “Returns”readonly string[]