2.4 KiB
id, title, theme, status, priority, created, date_source, order
| id | title | theme | status | priority | created | date_source | order |
|---|---|---|---|---|---|---|---|
| affordances/an-affordance-a-scoped-agent-warns-on-the | An affordance: a scoped agent warns when a request lands outside its scope | affordances | open | urgent | 2026-08-25 | stated | 2 |
An affordance: a scoped agent warns when a request lands outside its scope. Wanted 2026-08-25, urgent. Born from a real miss the same day: a commander-coordination thread landed in the standing todo chat, and the agent acted on it instead of noticing it was not its job. The owner keeps many sessions open with different roles, and a message in the wrong one currently gets executed by whoever receives it.
One affordance, two triggers, both ending in the same move — one line, "this may be meant for another chat?", then wait for the confirm; on a confirm, do it without further protest:
-
Named scope. The session has been named or tasked with a specific thing — a commander's task, a chat the owner titled, a role stated in conversation ("you are my todo guy"). A request outside that scope gets the warning first. Filing or noting something ABOUT another subject stays in scope; DOING the other subject does not.
-
No name, but the request assumes a context this conversation does not hold. Mid-work, a message arrives about something the agent has never heard of — and the phrasing assumes it knows exactly what is meant ("as I explained", "the change we agreed", a "he" with no referent here). That assumption is the signal: the context exists in SOME chat, and it is not this one. Warn the same way.
The second trigger is the one that earns the affordance: it needs no configuration at all, only the observation that the owner is speaking to a shared history the transcript does not contain.
Notes for whoever writes it: affordances live in capabilities/affordances/ and reach every Claude
session per turn via affordanceBlock — hot, no restart. "What am I named or tasked with" already has
partial answers — a commander gets its identity in the commanderBlock preamble, and a chat's title
lives in the transcript's own summary entries — but trigger 2 deliberately works without either.
Keep the warning cheap and single-shot: a wrongly-suspicious agent costs one line; a wrongly-obedient
one costs what the todo chat paid on 2026-08-25 — work done in the wrong place by the wrong agent.