Repository navigation
Conversation
|
Hi Ken, a couple of questions:
|
|
Thanks for looking at it. On the first one, For The part I don't see covered is data going out. Take a read-only search tool that sends the query to a third party API. It has no side effects, so I wouldn't expect it to be marked consequential, and its output being untrusted says nothing about what the arguments can leak. What an agent or a guardrail would do differently with open world is check the arguments before the call, for secrets or for data that came from another origin, because they leave the page's origin. That check is a different mitigation from asking the user before something with side effects, and from sanitizing the result. It also helps to know which calls to check. Exfiltration checks on arguments are not free and they produce false alarms, so being able to run them only on tools that can reach other parties is a real difference in practice. Without the hint a guardrail has to check everything, or guess. A page can of course lie about it, but I think it still works. If a site says a tool may talk to third parties, you can always act on that. If a site you already trust, say Shopify, says it doesn't, that is a statement you can reasonably rely on. For a site you know nothing about, "closed" would just not lower the checks. So if it stays, I think it should be narrowed to that outbound meaning, and maybe renamed to say so. If people feel that is too small to justify a new hint, I'm fine with dropping the second commit and keeping just the note about omitted hints. |
c2f9033 to
4638d35
Compare
|
@jpagnucco regarding the
I can do that in a separate PR if you would want that. Or, do you want me to file an issue about it? |
Adds
openWorldHint, which is asked for in #53 (and in #119, closed as a duplicate). MCP has the annotation, but commenters found its wording vague, so this defines it: the tool may send data to, or read data from, parties other than the origin of the page that registered it.An agent can use it before a call, for example to decide whether the arguments get checked for secrets because they might leave the origin. It can use it after a call too, because the result may carry content from a third party.
Unlike the other hints it defaults to true, as it does in MCP, so a tool that doesn't declare it is treated as open to the world. That default is the part most likely to change. #53 is discussing whether hints should have defaults at all, and if they go, this one goes with them.
This used to be two commits. The note about omitted hints is split out into #358, since the defaults question is still open.
Not included:
destructiveHint(consequentialHintcovers much of it, see #331) and a retry safety hint (still open in #53).Built locally with Bikeshed with no warnings.
Preview | Diff