--- id: affordances/no-way-to-see-which-affordances-are-reaching title: "No way to see which affordances are reaching your agents, or to turn one off" theme: affordances status: open created: 2026-08-21 date_source: stated order: 1 --- **No way to see which affordances are reaching your agents, or to turn one off.** They are global: `affordanceBlock()` reads every file under `capabilities/affordances/` and is called with no user context (`claude-manager.ts:582`), so every account gets every one, in every conversation. That is fine while they are uncontroversial and stops being fine immediately after. "Wait for the question" was written to one owner's taste on 2026-08-21 — probably what most people want, and nobody has asked anyone. An affordance nobody can see and nobody can decline is a preference imposed as a fact. Wants: a settings screen listing every affordance with its name, description, where it came from (`officer/core` versus a plugin) and its body, plus a per-user toggle. Storage is one table keyed on user and the affordance's namespaced id. The work is threading a userId into `affordanceBlock`, which today takes only a root path. Two things to decide when it is built rather than now: whether a plugin can ship an affordance that is off by default, and whether disabling one should be visible to the agent at all — an agent told "this client renders images" behaves differently from one told nothing, and a THIRD state, "you were told not to", is a different thing again.