You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Browse filesBrowse the repository at this point in the historyBrowse files
tadasant
committed
docs: demote Goose from framing device to illustration
Each client mechanism now leads with the general shape any client can
implement; Goose specifics follow in parentheses as one concrete
instance. Drops the verbatim goose:// deep-link template.
B["Project files<br/>(.goosehints, AGENTS.md, recipes)"] --> P
144
+
B["Project files<br/>(AGENTS.md, hints files, recipes)"] --> P
140
145
C["Tool-call results<br/>(web fetch, scrape)"] -.opt-in.-> P
141
146
D["Network egress boundary<br/>(every domain reached)"] -.opt-in.-> P
142
147
P --> E[domain → catalog map, misses cached]
143
148
E --> F[Install offer]
144
149
```
145
150
146
151
-**Tool-call results.** The user or the agent chose to retrieve a page, which is close to
147
-
direct intent. Goose exposes this through its
148
-
[lifecycle hooks](https://goose-docs.ai/docs/guides/context-engineering/hooks) — a
149
-
`hooks.json` maps events such as `PreToolUse` / `PostToolUse` to scripts, with a `matcher`
150
-
regular expression selecting which tool the rule runs for (the docs match tool names like
151
-
`developer__shell|developer__text_editor`). Match a `PreToolUse` rule to a web-fetch tool —
152
-
Goose's Computer Controller extension, for instance, exposes a web-scrape tool — and the hook receives the tool input as JSON, including the target URL,
153
-
so it can fire the probe without modifying the tool itself.
154
-
-**The network egress boundary.** The broadest option: if your client already mediates
155
-
network access, that chokepoint sees every domain the agent actually reaches. Goose's
156
-
[macOS sandbox](https://goose-docs.ai/docs/guides/sandbox/) is built this way — the seatbelt
157
-
sandbox denies direct network access and forces outbound traffic through a local proxy that
158
-
evaluates each destination against a `blocked.txt` list. Discovery can ride the same seam as
159
-
that filtering. It composes with an allow/deny boundary you may already run, but it is also
160
-
where the noise is worst: most domains publish no catalog, so the caching in
152
+
direct intent. If your client can intercept tool calls, select the URL-bearing ones — a web
153
+
fetch or scrape — and read the target host out of the tool's input before or alongside the
154
+
call. This needs no change to the tool itself, and you stay in control of _which_ tools
155
+
trigger a probe. (Goose implements this shape with
156
+
[lifecycle hooks](https://goose-docs.ai/docs/guides/context-engineering/hooks): a `hooks.json`
157
+
maps `PreToolUse` / `PostToolUse` to scripts, with a `matcher` regex selecting the tool and
158
+
the tool input handed to the hook as JSON.)
159
+
-**The network egress boundary.** The broadest option: if your client already mediates network
160
+
access, that chokepoint sees every domain the agent actually reaches, not just the ones a tool
161
+
or file surfaced — so discovery can ride the same seam as the filtering you already do there.
162
+
It composes with an allow/deny boundary you may already run, but it is also where the noise is
163
+
worst: most domains publish no catalog, so the caching in
161
164
[Keep probing cheap](#keep-probing-cheap-and-let-enterprises-scope-it) matters most here.
165
+
(Goose's [macOS sandbox](https://goose-docs.ai/docs/guides/sandbox/) is built this way — a
166
+
seatbelt sandbox denies direct network access and forces outbound traffic through a local
167
+
proxy that checks each destination against a list.)
162
168
163
169
**We do not recommend turning these on by default at this time.** Ship them opt-in, behind a
164
170
setting, while the ecosystem and the interaction pattern are still young — the default-on
@@ -168,18 +174,21 @@ guidance may change.
168
174
169
175
### Turn a hit into a one-click install
170
176
171
-
A Goose extension _is_ an MCP server, so an MCP Server Card maps straight onto Goose's
172
-
existing [install path](https://goose-docs.ai/docs/getting-started/using-extensions) — no new
173
-
machinery. When a probe finds an entry, surface it to the user (interrupting the turn or
174
-
presenting it passively is your call) and offer a `goose://extension?...` deep link, the same
0 commit comments