Skip to content
Human in the loop for AI coding agents

Your AI agent calls youbefore it does somethingit can't undo.

Coding agents run on their own for low-risk work. When one hits something irreversible, a production deploy, a destructive command, a force-push, Ony phones you to approve or deny in one keypress.

$ pip install ony|ony enroll_

Works with

Claude CodeOpenAI CodexAnthropicOpenAISignalWireSelf-hosted

Incoming, Ony

claude-code, prod-api repo

high risk

Approval requested

An agent is asking to deploy to production.

Enter your 6-digit code to confirm.

1

Approve

2

Deny

Decision signed and verified on your device

Claude Code hooks Codex app-server PromptPatch connector SignalWire telephony Self-hosted or cloud
The shift

Agents run autonomously now. You can't watch every terminal.

Coding agents work for hours, in parallel, sometimes overnight or headless. Most of what they do is low-risk and does not warrant constant supervision. But a single irreversible action, a production deploy, a dropped table, a force-push over main, is the one moment you would want a say.

Ony gives you exactly that say, and nothing more: full autonomy on the safe path, a phone call on the irreversible one.

How it works

From risky tool call to your keypad, in seconds.

Three steps, fully automatic. You only show up for the decisions that matter.

01

Your agent hits a risky action

A PreToolUse hook classifies every tool call. Reads and safe edits pass instantly. A deploy, a destructive command, a force-push, a schema change, or a secret access gets gated.

02

Ony calls your phone

The server re-derives the real risk (the agent's own hint is never trusted) and places a call. You hear the action and its risk, never the raw command or your secrets.

03

You decide, the agent continues

Press 1 to approve, 2 to deny. High-risk actions also ask for your 6-digit code. The verdict is signed, verified on your device, and delivered back in seconds.

Set the mode per session:/ony ongates high-risk steps,/ony awaycalls you for every step,/ony offsteps aside.
In your terminal

A familiar permission prompt, delivered to your phone.

Your agent pauses on the risky step exactly like a normal approval prompt. The difference is that the approval reaches you wherever you are.

  • One hook install, no agent fork or patched binary.
  • Decisions delivered by cached flag or session resume, never keystroke injection.
  • Works headless, in CI, and across parallel sessions.
claude-code, prod-api
# agent is ready to run:
$ terraform apply -auto-approve

[ony] high-risk action detected: production deploy
[ony] calling +1 (***) ***-4821 ...
[ony] waiting for your decision _

[ony] approved by you, signature verified
Apply complete! Resources: 3 added, 1 changed.
What it gates

The actions you'd never want on autopilot.

Reads, searches, and ordinary edits run ungated. Anything that ships, deletes, or touches production is classified server-side and routed to you.

terraform apply

Production deploy

git push --force origin main

Force-push

rm -rf ...

Destructive command

alembic upgrade head

Database migration

kubectl apply -f prod/

Infra change

DROP TABLE ...

Prod DB change

read .env / rotate secret

Secret access

stripe / payment settings

Payment change

Built for real workflows

Enough control to trust autonomy.

The kill switch, the audit trail, and the ergonomics that make running agents unattended practical.

Three modes, per session

/ony on gates only high-risk steps. /ony away calls you for every actionable step (remote control). /ony off steps out of the way.

Many agents at once

Run Claude Code and Codex in parallel across repos. Each handoff binds to a stable agent session, so approvals never cross wires.

Multiple devices

Enroll more than one phone. Decisions are attributed to whoever approved, and every device verifies signatures independently.

Fast by default

Safe tool calls are never delayed. Only gated actions wait, and only until you press a key. Timeouts fail closed, never silently open.

Signed end to end

Every verdict is HMAC-signed per device and bound to the exact request. Forged or replayed approvals are rejected by the connector.

Tamper-evident audit

Every decision lands in a keyed, hash-chained, append-only log. Rewrite one event and the chain breaks. The dashboard shows it verified.

Trust model

A kill switch you can actually trust.

The whole point is to be the authority an autonomous agent can't talk its way around. So the trust boundary is the server and your device, never the agent.

Server-authoritative risk

The agent can claim a call is low risk. Ony ignores the hint and classifies from a server-owned action taxonomy. Unknown actions fail closed to critical.

Signed decisions

Every verdict is HMAC-signed per device and bound to the exact request. The local connector verifies the signature before honoring it.

Tamper-evident audit

Decisions are recorded in a keyed, hash-chained, append-only log. Rewrite one event and the chain breaks, end to end.

Fail-closed by design

If Ony is unreachable, a signature can't be verified, or a deadline passes, the action is never silently allowed.

Open-core

Run it yourself, or let us run it.

Same product, two ways to get it. The open-source edition is fully featured. Ony Cloud just removes the ops.

Open source

AGPL-3.0

Self-host the whole stack. Own your data and your phone line.

  • Every feature included, no paywalled core
  • pip install ony plus a one-command Docker stack
  • Bring your own telephony and keys
  • Runs entirely on your infrastructure

Ony Cloud

Hosted

The managed path. Zero ops, dedicated numbers, ready in minutes.

  • Fully managed, no servers to run or patch
  • Dedicated phone numbers per organization
  • Team seats, roles, and on-call escalation
  • Multi-tenant isolation and managed key storage
By design

Guarantees, not best effort.

Every verdict is signed

Signed per device and verified on-device before it is honored.

No silent allows

If a decision cannot be reached or verified, the action is never allowed.

Agent-agnostic

Claude Code and OpenAI Codex today, on one normalized event model.

FAQ

Frequently asked questions

Does Ony slow my agent down?

No. Only gated actions wait, and only until you respond. Reads, searches, and ordinary edits run at full speed, ungated.

Can the agent bypass the gate?

No. The agent's own risk hint is ignored. Risk is classified server-side, and the verdict is signed and verified on your device. Unknown actions fail closed.

What does Ony see?

The action and its risk classification, not your raw commands or secrets. You self-host the whole stack if you want zero third parties in the loop.

Which agents are supported?

Claude Code via a PreToolUse hook, and OpenAI Codex via its app-server. The event model is agent-agnostic, so adding a connector means mapping its events, not rewriting the core.

Open source or hosted?

Both. The open-source edition is fully featured and self-hostable under AGPL-3.0. Ony Cloud is the same product, managed, with dedicated numbers and team features.

How does the phone call actually happen?

Through a telephony provider (SignalWire). Self-host with your own number and keys, or let Ony Cloud provision a dedicated number for your organization.

Give your agents autonomy.
Keep the kill switch.

Install the connector, wire your agent, and get your first call in minutes.

$ pip install ony && ony enroll