Quick Install
See the CLI command reference for more options.
zenable install goose installs both the MCP server (in your Goose config.yaml) and a managed Open-Plugin-Spec plugin that runs Zenable’s conformance checks throughout your coding session.
Advanced: Manual MCP Configuration
Advanced: Manual MCP Configuration
The below is a minimal example. Consider using the quick install command to handle this automatically.
extensions key, using type: streamable_http for streamable-HTTP servers. Goose’s MCP config is global. See Goose’s extensions docs for the full schema.Place the following in ~/.config/goose/config.yaml:Goose requires
name and description on a streamable_http extension — without them Goose silently skips the entry.How the hooks work
How the hooks work
Goose’s documented hooks surface is the Open-Plugin-Spec plugin format. The plugin file is fully managed — every
zenable install goose writes a managed plugin (at ~/.agents/plugins/zenable/hooks/hooks.json, with a .plugin/plugin.json manifest) that integrates Zenable’s governance, guardrails, and observability across your coding sessions. The plugin can live globally (~/.agents/plugins/) or project-scoped (<repo>/.agents/plugins/).The plugin subscribes to the UserPromptSubmit, PreToolUse, PostToolUse, and Stop events — checkpointing your work as you go and running a Zenable conformance review when the agent finishes a turn. On the Stop event, Zenable returns a blocking decision so Goose feeds the message back to the agent — findings to fix, or a prompt to sign in when the review could not run — instead of ending the turn.Hooks require Goose v1.37.0 or newer — that’s the release that honors blocking
Stop hook decisions. On older Goose the review still runs but its message to the agent is silently dropped, so zenable install goose enforces this minimum.zenable install / zenable sync rewrites it. If you want to add your own Goose plugins, drop a separate plugin alongside it under ~/.agents/plugins/.