Skip to main content
Alex Hancock
Software Engineer
View all authors

Hooks: run your own scripts on every goose event

· 5 min read
Alex Hancock
Software Engineer

Hooks: run your own scripts on every goose event

goose now supports lifecycle hooks. Drop a plugin into a directory on disk and goose will run your shell scripts when things happen during a session: a tool is about to fire, a tool just finished, the user submitted a prompt, the session started, the session ended.

If you've used Claude Code's hooks or git hooks, it's the same idea. If you haven't: the agent loop is now scriptable from the outside, without writing any Rust or any MCP server.

goose 2.0 beta - new architecture and clients

· 4 min read
Alex Hancock
Software Engineer

blog cover

goose started life in the terminal. The earliest versions were a Python CLI that ran the agent in-process — you typed a message, the model responded, tools executed, and everything happened in a single loop. That simplicity was a strength: it meant anyone with a terminal could start using goose immediately, no app to install, no server to run.

As goose grew, so did the ways people wanted to use it. We shipped an Electron desktop app and suddenly we had two clients with two completely different integration paths. The Rust CLI talked to the agent directly in process, while the desktop app went through goosed, a custom REST + SSE server. Every new feature — session management, extension loading, streaming — had to be wired up in both places.