Keha

Your sessions stay between your devices.

Keha sees your agents' questions, plans and diffs. That is exactly why it is built so that we can't.

Your devices hold the keys

Every Mac and iPhone you add creates its own keys, kept in the system keychain. A new device joins only when a device you already trust signs it in. Your iPhone does this through iCloud with one banner on your Mac: “Alex's iPhone joined. Tap if this wasn't you.”

Your account is a list of devices for routing and billing. It never holds a private key.

The relay can't read your sessions

Session content is encrypted on the machine running the agent and opened only on your devices. Our relay forwards ciphertext and delivers it to devices that were offline. Undelivered messages expire.

The one thing it can read: your iPhone's Live Activity shows counts and glyph shapes, like “1 needs you, 3 working”. These are numbers and shapes only, never project names, paths or prompts.

AI is opt-in, and you can read every request

AI features are the deliberate exception to end-to-end encryption, so they start switched off. Each has its own switch and a one-screen explanation the first time it would run.

  • Secrets are scrubbed from text before it leaves your Mac.
  • Every request is written to a local log with the exact text that was sent and where it went.
  • Keha's AI service doesn't store what you send. It keeps usage records such as size and cost, never the text.
  • Bring your own Anthropic, OpenAI or OpenRouter key if you prefer. It stays on your Macs and is sealed for each request.

Your Claude login stays yours

Keha attaches through Claude Code's documented hooks. It never reads, copies or uses your Claude Code login, and its own AI never bills your Claude subscription.

Hooks you can read, that step aside

Before Keha changes your Claude Code, Codex or Pi settings, it shows you the exact change and asks once.

Hooks fail open. If Keha isn't running, they exit immediately and your agent asks in its terminal as usual. A Keha problem never stalls an agent.

Approvals need you

Approving from the lock screen requires Face ID or your passcode. Deny and stop are never the default button, and voice commands that stop work always wait for an explicit send.

Leaving

Deleting your account from the Mac or iPhone app erases its data from our services, keeping only the minimum record needed to stop it being recreated by accident. Your devices clean up their local data too; one that was offline finishes the next time it opens.

Report a vulnerability

Email security@keha.dev. We acknowledge reports within 48 hours and aim to ship fixes within 14 days.

See what your agents need, without handing over your code.

Try Keha macOS 15+

Keyboard shortcuts

They work on this page exactly as they do in the app.

⌥Space
Tap to open the panel. Hold to talk.
1–9
Answer the question the slab is asking.
JK
Move between sessions in the panel.
⌥⇧Space
Undo a voice command while its receipt shows. In the app it otherwise jumps to the agent's terminal.
Esc
Undo, or close the panel.
?
Show this list.
Try Keha