Setup gives every harness the same rules: the agent asks you through Starbridge for decisions
that are yours, and wraps the commands that block you in starbridge run. Anything else goes in
your own rules, which Starbridge never writes to.
Terms defines harness, agent and question picker.
What each harness supports
| Claude Code | Codex | Pi | opencode | Cursor | Antigravity | |
|---|---|---|---|---|---|---|
| Question picker raced on your devices | ✓ | ✓ | With add-on | ✓ | No | ✓ |
| Answer comes back without polling¹ | ✓ | ✓ | ✓ | ✓ | CLI only | ✓ |
| Answer reaches a running turn² | ✓ | ✓ | ✓ | ✓ | No | No |
| Permission prompts on your devices³ | Opt-in | Opt-in | Opt-in | Opt-in | No | Opt-in |
| Runs | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| "Waiting for you" | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
A raced question picker or permission prompt shows at the keyboard and on your devices at once, and the first answer wins.
¹ Your answer to a starbridge ask question comes back as the session's next prompt, so the
agent doesn't wait for it with starbridge wait. A headless run (claude -p, codex exec,
pi -p, opencode run, cursor-agent -p, agy -p) has no next prompt, so there the agent
waits with starbridge wait before it ends its turn.
² While the agent works, the answer to a question it marked "Waiting for you" reaches it at its next tool call. Any other answer comes once the turn ends. In opencode, every answer reaches it at its next step.
³ Off until you run starbridge config permissions on on the machine. Your devices can then
allow a call once or deny it.
Claude Code
Question picker. Starbridge races AskUserQuestion.
Answers. They come back through the Starbridge mod, in Claude Code 2.1.287 or later, in the terminal, the desktop app, IDEs and Remote Control. Agent SDK scripts count as headless.
Permission prompts. Starbridge races them. Your devices also offer "this session" or "always" when Claude Code does.
Only prompts Claude Code still shows reach your devices: in auto mode, its default, it settles most calls itself.
Codex
Question picker. Starbridge races request_user_input, which Codex offers only in Plan mode.
On Windows, it stays at the keyboard.
Answers. They come back through Codex's message queue, in the interactive CLI 0.160 or later.
Permission prompts. Starbridge doesn't race them: each prompt shows in one place. With starbridge config presence on, a
prompt stays at the keyboard while you are at this machine and goes to your devices while you
are away. Without presence, a prompt goes to your devices for up to 9.5 minutes, then to the
keyboard.
Setup. At its next launch after setup, Codex asks you once to trust the Starbridge plugin's
hooks ("Hooks need review"). Until you do, sessions start without the rules. Codex also asks you
once to run starbridge run outside its sandbox, which has no network.
If you pasted Starbridge's rules into ~/.codex/AGENTS.md before the plugin existed, remove them
once starbridge status says Codex plugin: installed, or Codex reads them twice.
Pi
Question picker. Pi has none of its own. If you add ask_user_question from
@juicesharp/rpiv-ask-user-question, Starbridge races it in the TUI. In RPC mode, an answer from
your devices reaches the agent only once the question closes at the keyboard.
Answers. They come back through the Starbridge Pi package, in the TUI and RPC mode.
Permission prompts. They need
pi-permission-system
(pi install npm:@gotgenes/pi-permission-system). Starbridge doesn't race them: each prompt goes
to your devices, and "Answer here" in Pi brings it back to the keyboard. Prompts from its path
and external_directory rules stay at the keyboard.
opencode
Question picker. Starbridge races question. A question with more than 4 options takes a
typed reply on your devices.
Answers. They come back through the Starbridge opencode plugin, in the TUI and
opencode serve.
Permission prompts. Starbridge races them. opencode run rejects every prompt itself, so none
reaches your devices.
Cursor
Question picker. Starbridge doesn't race askQuestion, and it stays at the keyboard. The
rules tell the agent to use starbridge ask instead.
Answers. They come back through the Starbridge stop hook, in cursor-agent. When a chat ends
its turn with a question open, the hook holds the chat, shown as busy, for up to 10 minutes.
Past 10 minutes, and in the Cursor IDE, the agent waits with starbridge wait. The IDE is
untested.
Permission prompts. They stay at the keyboard.
Antigravity
Question picker. Starbridge races ask_question.
Answers. They come back through the conversation's language server, in interactive conversations.
Permission prompts. Starbridge races them. With permission prompts on, each new conversation
first runs starbridge hello.
Checked with agy; the Antigravity app and IDE are untested.
What setup installs
Setup prints one line per harness it installs in. starbridge uninstall --agent <name> removes
Starbridge from one, until starbridge setup --agent <name>. A later setup, or
starbridge update, brings these files to the CLI's version.
| Harness | What | Where |
|---|---|---|
| Claude Code | The Starbridge plugin (rules, skill, hooks) and the Starbridge mod, code that runs inside Claude Code and brings your answer back | Claude Code's plugins, at user scope |
| Codex | The skill, and the Starbridge Codex plugin (rules, permission prompts) from a local marketplace | ~/.codex/skills/starbridge (or under $CODEX_HOME), ~/.codex/starbridge |
| Pi | The Starbridge Pi package (skill, rules, the extension that brings your answer back) | pi install git:github.com/T0mSIlver/starbridge@v<version> |
| opencode | The skill, and the Starbridge plugin (rules, answers, permission prompts) | ~/.config/opencode/skills/starbridge, ~/.config/opencode/plugins/starbridge.ts, ~/.config/opencode/starbridge/ |
| Cursor | The skill, and hooks that bring the rules and your answer back, beside your own | ~/.cursor/skills/starbridge, ~/.cursor/starbridge, ~/.cursor/hooks.json |
| Antigravity | The Starbridge plugin (rules, skill), loaded by the app, the IDE and agy |
~/.gemini/config/plugins/starbridge |
Setup also adds allow rules so that starbridge ask, waiting, working, wait and settle
run without a permission prompt; in Pi and agy, hello too. They go in:
- Claude Code: the plugin.
- Codex:
~/.codex/rules/starbridge.rules, which also runs them outside the sandbox. - Pi: pi-permission-system's rules and its
authorizerChain, only when it is installed. cursor-agent: itscli-config.json, in$CURSOR_CONFIG_DIR, else$XDG_CONFIG_HOME/cursor, else~/.cursor.agy:~/.gemini/antigravity-cli/settings.json, outside--sandbox. The Antigravity app and IDE still ask the first time.
In Pi and agy, they apply only when the command is that alone. starbridge run still asks,
since the command it wraps can be anything.
Your own rules
Put your lines in a file only you use. A repo's AGENTS.md or CLAUDE.md is committed, so lines
there apply to everyone who works on the repo.
| Harness | Every repo | One repo |
|---|---|---|
| Claude Code | ~/.claude/CLAUDE.md |
CLAUDE.local.md |
| Codex | ~/.codex/AGENTS.md |
AGENTS.override.md |
| Pi | ~/.pi/agent/AGENTS.md |
AGENTS.override.md |
| opencode | ~/.config/opencode/AGENTS.md |
a file you name in instructions in .opencode/opencode.json, such as ["AGENTS.local.md"] |
| Antigravity | ~/.gemini/GEMINI.md |
a file in .agents/rules/, such as .agents/rules/local.md |
The one-repo files go at the repo root, except Antigravity's. Add each file you create to
.git/info/exclude to keep it out of git, .opencode/opencode.json included.
Claude Code reads CLAUDE.local.md in addition to the repo's CLAUDE.md. AGENTS.override.md
replaces the repo's AGENTS.md instead, so in a repo that has an AGENTS.md, put your lines in
the every-repo file.
Checked on 2026-10-05 with Claude Code 2.1.289, Codex CLI 0.160.0 and Pi 0.87.1, and on 2026-10-06 with opencode 1.18.31.
Lines to copy
Paste the lines you want and edit them to fit.
Ask me through Starbridge before you deploy.
Ask me through Starbridge (`starbridge ask`) before you merge a pull request.
Ask me through Starbridge before you force-push or delete data.
When CI fails and the fix is not obvious, ask me through Starbridge what to do.
When a long task is done, ask me through Starbridge which next step to take.
Run the e2e tests that take over my Mac through `starbridge run`.
Tell me through `starbridge run` when you run local inference.