# Ony

> Control how Ony gates this agent by phone. Use when the user types /ony, or asks to set Ony to off, on (high-risk only), away (call me for every actionable step), here (back at the keyboard), or status. The requested mode is in the arguments.

- Skill: `ony-ai/ony` (Agent Skill)
- Install (CLI): `npx skillmds@latest add ony-ai/ony`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ony-ai/ony/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: ony-ai (https://skillmd.com/u/ony-ai)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/ony-ai/ony

---


# /ony - control how Ony gates this agent

Ony phones the developer to approve the agent's risky actions and relays the decision back as allow
or deny. As a marketplace plugin this skill is invoked as `/ony:ony <mode>` (the project-level
install generated by `ony hooks install` exposes the same skill as `/ony <mode>`); the mode is in
`$ARGUMENTS`.

When invoked, run the matching command with the Bash tool and report the new mode in one line. Do
not ask for confirmation first. If `$ARGUMENTS` is empty or not a mode below, run the `status`
command and tell the user the valid modes.

| Mode (`$ARGUMENTS`) | Run | Meaning |
| --- | --- | --- |
| `on` | `ony on` | At the keyboard: phone me only for high-risk actions |
| `away` | `ony away` | Remote control: phone me for EVERY actionable step (I left the keyboard) |
| `here` | `ony here` | Back at the keyboard: return to high-risk-only calls |
| `off` | `ony off` | Ony does nothing; tool calls use normal permissions |
| `status` | `ony status` | Show the current mode |

The mode is PROJECT-scoped (stored in this project's `.ony/project.json`): every session in this
project shares it; other projects are unaffected. It is read by the gate hooks this plugin
installs, so a change takes effect on the next tool call.

## How the gate composes with Claude Code

Ony inherits Claude Code's own decision surface: it rings exactly when Claude itself would stop
and ask you for permission - never for work you pre-authorized (allowlisted commands,
accept-edits, bypass-permissions). `away` answers EVERY such ask by phone; `on` answers only the
high-risk ones and leaves the rest to the terminal dialog. `away` also turns an `AskUserQuestion`
into a real phone menu - Ony reads each option, marks the recommended one, and delivers the keypad
choice back as the answer - so ask multiple-choice questions normally instead of avoiding them;
the user answers by phone.

## Prerequisite

The `ony` connector must be installed and enrolled on this machine:

```bash
pip install ony
ony enroll --url <your-ony-url> --email <you>
```

(You are prompted for the password; it is not accepted on the command line.) If a command reports
"Not enrolled", tell the user to run `ony enroll` first. `ony doctor` diagnoses a setup that never
calls.

