A mock hardcover titled "The Design of Everyday Agents" by Don Norbot, a yellow jacket with a robotic teakettle on the cover, lying on a wooden desk beside a pen

Affordances and Signifiers for AI Agents

I’m rereading Don Norman’s “The Design of Everyday Things,” and I can’t stop applying it to AI agents.

Norman provides two foundational ideas early in the book. An affordance is a relationship between an object and whoever is using it, set by the object’s properties and the person’s abilities together, and it determines what they can do with the thing. The affordance is that relationship itself, not a property the object has on its own. A signifier is the cue that tells you the action is there. A door affords pushing; the flat metal plate signifies it.

Most of this carries over to agents cleanly. And because an affordance depends as much on the user’s abilities as on the object, the agent’s one unusual ability reshapes the relationship: it perceives only what you put into its context. You can hand it a flashlight, a search tool it decides when to use. But you still chose to hand it the flashlight, and it still only turns it on when something tells it the room is dark.

That leads somewhere odd. An affordance nobody signified, and nothing prompts the agent to go find, might as well not exist. Norman’s “knowledge in the world” becomes “knowledge in the context window,” and discovery becomes something the environment has to set up, by putting the thing in front of the agent or giving it a labeled way to fetch it, rather than something the agent stumbles onto.

A couple of things follow from this.

To an agent, a DELETE and a GET are the same shape of call. Nothing about the call tells it which one is dangerous. The signal almost nobody builds is consequence: what an action does to the world, and whether it can be undone.

And most APIs spend their effort describing how to call them while saying almost nothing about what just happened. For something that can’t feel stakes and learns mostly from what comes back, that’s the wrong half to invest in. No search tool fixes this. You can’t look up whether a call is reversible before you make it, and you can’t look up the result of an action you haven’t taken.

We spend most of our attention making agents smarter, when a lot of the gain is in the world we hand them. An agent only knows the environment you build for it. So build ones that describe themselves, flag consequences before the action, and keep a record of what happened after. The goal is an agent whose sense of what it can do, and what it just did, stays accurate, which is worth more than how capable it looks.

None of this is new. Plenty of people are already deep in context engineering, working out what to put in front of a model and when. The book didn’t tell me anything they don’t already know in practice. What it gave me was a vocabulary: affordance, signifier, mapping, feedback, the gap between what you can do and what you can tell was done. Names for what the practice is already reaching toward.

The problems we keep hitting in agents, helping something discover what it can do, report what it did, and recover when it’s wrong, are ones the design field worked on for decades for people. Norman was writing about doorknobs and teakettles in 1988, and without meaning to, he left a manual for the systems we are building now.

It’s worth rereading the old stuff. It tends to be further ahead than it looks.