Agents
goose
goose and chock: install methods and steps, what it can enforce, and the evidence behind it.
Install methods: plugin, sync. Agentseam tier block, grade best-effort before a tool runs.
Install methods
- Plugin:
chock install --client goose(ask the user before running it) - Repo hooks:
chock sync --repo . --agents goosewrites.agents/plugins/agentseam/hooks/hooks.json(ask the user before running it)
Install steps
goose (goose)
Tested
The command (ask the user before running it: it builds a plugin of hooks that change how their agent behaves):
chock install --selection <code> --client goose --apply
With --apply, chock runs these steps for goose:
goose discovers ~/.agents/plugins/chock-guardrails as a user plugin, in every project: start a new goose session. There is no command to run (goose plugin install takes a git URL only). To turn it off, add chock-guardrails to disabledPlugins in ~/.config/goose/settings.json.
What it can enforce
- Tier
- block
- Grade before a tool runs
- best-effort
- Fail mode before a tool runs
- configurable
- Basis
- vendor-docs
- Recorded
- 2026-10-11
Events
| Event | Can block | Can rewrite | Fail mode |
|---|---|---|---|
pre_tool | yes | no | configurable |
post_tool | no | no | open |
tool_failure | no | no | open |
prompt_submit | no | no | open |
session_start | no | no | open |
session_end | no | no | open |
stop | yes | no | open |
file_changed | no | no | open |
Ask support
Answers an ask with: block. Honours ask: no. Evidence: tested (tests/test_guard_fail_to_ask.py::test_a_crashed_guard_asks_rather_than_allowing).
Hook timeout
Default 30 seconds, set by the timeout field in s.
Test status
- Plugin (goose): tested.
- Repo hooks: untested. A test of the plugin says nothing about repo hooks.
- Through the plugin install, at hook point plugin-hook: goose 1.55.0 CLI, Windows 11, 2026-10-18. live probe of a chock plugin auto-discovered from
~/.agents/plugins/chock-witness, with Git for Windows' sh on PATH. goose runs every hook withsh -c. Without sh, every tool call was denied, even a harmlessgit status, with "the hook command failed to run" (on_failure: block).block-no-verifyrefused agit commit --no-verifyshell command before it ran ("Tool call denied by policy hookchock-witness: Blocked by chock policy: block-no-verify").pin-github-actionsrefused a write to.github/workflows/witness.ymlat the write ("Unpinned GitHub Action detected"). A harmlessgit statusran (org-plan witness/results/witness-goose-2026-10-18.md, 6316fd3)
Known limits
PreToolUse and Stop are the only events that can block; a block from any other event is ignored. The verdict is the flat {decision: block, reason} body, and a bare allow is silence. No rewrite and no ask: a transform or escalate degrades to a block, never to a silent pass. Fail mode is configurable and only at PreToolUse: a failed hook is fail-open by default, and on_failure: block makes it fail closed -- agentseam's install writes on_failure: block on every hook entry it writes (goose reads it at PreToolUse only). Stop stays fail-open whatever on_failure says, and goose caps consecutive Stop blocks (GOOSE_STOP_HOOK_BLOCK_CAP). stdout is the decision channel, so a handler that prints a log line to stdout reads as no decision. The event name rides under event, not hook_event_name, which is what separates goose's payloads from every other adapter's. PreToolUseResult, BeforeReadFile, BeforeShellExecution and AfterShellExecution are observation-only and parse as unknown; AfterFileEdit is wired as file_changed. SubagentStart/SubagentStop are not emitted. Every plugin hook is spawned as sh -c <command> on every platform, Windows included: hook_command() calls Command::new("sh") with no Windows branch (its only cfg branch swaps in flatpak-spawn on Linux), and the hooks module never reads GOOSE_SHELL, which selects only the developer shell tool's shell (vendor-source: aaif-goose/goose v1.55.0 = 2bcb858, crates/goose/src/hooks/mod.rs:1093-1098; read 2026-10-18). A spawn error becomes a hook failure, "the hook command failed to run" (:725-738, :45), so on Windows sh must be on PATH or, under the on_failure: block that agentseam writes, every tool call is denied, harmless ones included. No hook field picks a per-platform command (the action carries only command, timeout and on_failure, :127-133), so unlike codex_cli's commandWindows no install form works around it. Owner witness run, 2026-10-18, chock's own goose plugin (not a Claude Code plugin), goose 1.55.0 on Windows 11: with no sh on PATH, the guard, the gate and a benign git status were all denied with that hook-failure message, and setting GOOSE_SHELL=powershell changed nothing; with Git for Windows' Git\bin (sh.exe) put on PATH, the benign call ran, the guard (git commit --no-verify) was refused before it ran and the gate (a write of an unpinned GitHub Action) was refused at write (org-plan witness/results/witness-goose-2026-10-18.md at 6316fd3). Instruction files reach it through AGENTS.md. Evidence wanted (to test or overturn this row): https://github.com/open-coder-ai/agentseam/issues/177
Built from engine 5a4b6287a46e and catalog 1e60d211c1bb.