How Keha decides which agent you mean.
You run five agents on three Macs. You say “fix that”. Keha has to pick one, and show you its pick before anything is sent. Here is how it decides, and when it refuses to guess.
“infra, run the plan against staging two first”
Named project. “infra” matches one session, so there is nothing to guess.
By name
Say a project or machine, like “infra, run the plan against staging two first”, and Keha routes there directly. Names come from your own sessions, so spoken names are recognised the way you say them.
Typing works the same way in the panel: @infra or @studio/infra.
Open question
When one agent is waiting on you, an answer like “yes, but dry run first” goes to it and is mapped onto its options. You see “Answer 2 · Yes, dry run first” before it is sent.
Inbox numbers are never addresses. Saying “two” answers a question; it never picks the second session.
What you see
“Fix that” only makes sense next to what is on your screen. With your permission, Keha reads the visible text of the window you're looking at, from developer apps only, and uses it to resolve “that”.
- Password managers and private apps are never read. Secure fields are skipped.
- Other apps are asked about once.
- A picture of the window is sent only if you turn on that one switch. It is off by default.
Not sure
When two sessions are close, Keha shows both and waits. Click or press Tab to switch, then send. A low-confidence route never sends on its own.
The same goes for anything that stops work or starts something new: deny, stop and interrupt commands, and new sessions, always wait for an explicit send. So does every route while VoiceOver, Switch Control or Full Keyboard Access is running.
The receipt
Every route shows a receipt within 700 ms of letting go: the target, the instruction, and a two-second countdown ring.
- Send now: press the talk hotkey again, Return in Keha, or click.
- Undo: ⌥⇧Space, Esc in Keha, or click.
- Plain keys never act on a receipt while another app is in front.
Keha rewrites your words only when they need it. “Fix that” becomes a full instruction; a clear sentence is sent as you said it.
When the network can't keep up
If cloud transcription is busy or unavailable, that command falls back to speech recognition on your device. Routing by name and answering an open question keep working.
The microphone lights only while you hold the key. A quick tap never turns it on.
On your iPhone
Hold the talk button in the Keha app. The same routing, receipt and undo apply, so you can steer an agent from the couch without reading its terminal.