todo: urgent — an affordance for scope, and for the request that assumes another chat's context

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-25 04:49:00 +00:00
co-authored by Claude Fable 5
parent 58dbfc8313
commit 68f4fe61fa
2 changed files with 44 additions and 3 deletions
@@ -0,0 +1,40 @@
---
id: affordances/an-affordance-a-scoped-agent-warns-on-the
title: 'An affordance: a scoped agent warns when a request lands outside its scope'
theme: affordances
status: open
priority: urgent
created: 2026-08-25
date_source: stated
order: 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**:
1. **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.
2. **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.