Skip to content

Latest commit

 

History

History
147 lines (97 loc) · 6.34 KB

File metadata and controls

147 lines (97 loc) · 6.34 KB

Interactive approval

When Claude Code runs in permission mode, Untether shows inline buttons in Telegram so you can approve or deny tool calls from your phone.

When buttons appear

Buttons appear when Claude Code wants to:

  • Edit or create a file (Edit, Write, MultiEdit)
  • Run a shell command (Bash)
  • Exit plan mode (ExitPlanMode)
  • Ask you a question (AskUserQuestion)

Other tool calls (Read, Glob, Grep, WebSearch, etc.) are auto-approved — they don't change anything, so you won't be interrupted for them.

The three buttons

When a permission request arrives, you see a message with the tool name and a compact diff preview, plus three buttons:

Button What it does
Approve Let Claude Code proceed with the action
Deny Block the action and ask Claude Code to explain what it was about to do
Pause & Outline Plan Stop Claude Code and require a written plan before continuing (only appears for ExitPlanMode)
Let's discuss Talk about the plan before approving or denying (only appears after outline is written)

Buttons clear immediately when you tap them — no waiting for a spinner.

Approval message with Approve / Deny / Pause & Outline Plan buttons

!!! untether "Untether" ▸ Permission Request [CanUseTool] - tool: Edit (file_path=src/main.py)
📝 src/main.py
- import sys
+ import sys
+ from pathlib import Path

Approve Deny Pause & Outline Plan

Diff previews

For tools that modify files, the approval message includes a compact diff so you can see what's about to change before deciding:

  • Edit: 📝 file path, removed lines (- old) and added lines (+ new), up to 4 lines each
  • Write: 📝 file path, then the first 8 lines of content to be written
  • Bash: $ command (up to 200 characters)

This lets you make informed approve/deny decisions without leaving Telegram.

!!! untether "Untether" ▸ Permission Request [CanUseTool] - tool: Edit (file_path=src/main.py)
📝 src/main.py
- import sys
+ import sys
+ from pathlib import Path

Approval message with compact diff preview showing removed and added lines

!!! note "After plan approval" When you approve a plan outline (see Plan mode), diff previews are skipped for the rest of the session — tools are auto-approved since you already reviewed the plan.

Answering questions

When Claude Code calls AskUserQuestion, Untether renders the question with interactive option buttons in Telegram:

  • Option buttons — tap any option to answer instantly. Claude Code receives your choice and continues.
  • "Other (type reply)" — tap this to type a custom answer. Send your reply as a regular message and Untether routes it back to Claude Code.
  • Multi-question flows — if Claude Code asks multiple questions, they appear one at a time (e.g. "1 of 3"). Answer each to step through the sequence.
  • Deny — tap Deny to dismiss the question. Claude Code proceeds with its default assumptions.

Toggle ask mode on or off via /config → Ask mode. When off, questions are auto-denied and Claude Code proceeds with defaults.

AskUserQuestion with option buttons and "Other (type reply)"

!!! untether "Untether" ❓ Which test framework should I use?

pytest unittest
Other (type reply) Deny

Push notifications

When approval buttons appear, Untether sends a separate notification message so you don't miss it — even if your phone is locked or you're in another app.

Ephemeral cleanup

Approval-related messages (notifications, button messages) are automatically deleted when the run finishes, keeping your chat clean.

Auto-approve configuration

You can configure which tools require approval and which are auto-approved. By default, only ExitPlanMode and AskUserQuestion require user interaction — all other tools are approved automatically.

To change this behaviour, adjust the permission mode. See Plan mode for details.

Engine-specific approval policies

Claude Code is the only engine with interactive mid-run approval buttons. Other engines offer pre-run policies that control what the agent is allowed to do before it starts:

Codex CLI — Approval policy

Toggle via /configApproval policy:

Policy CLI flag Behaviour
Full auto (default) (none) All tools approved — Codex runs without restriction
Safe --ask-for-approval untrusted Only trusted commands run; untrusted tools are blocked

This is a pre-run policy — Codex doesn't pause mid-run to ask for permission. The policy is set before the run starts.

Gemini CLI — Approval mode

Toggle via /configApproval mode:

Mode CLI flag Behaviour
Read-only (default) (none) Write tools blocked — Gemini can only read files
Edit files --approval-mode auto_edit File reads and writes OK, shell commands blocked
Full access --approval-mode yolo All tools approved — full autonomy

This is also a pre-run policy. Gemini CLI doesn't have interactive mid-run approval.

Both policies persist per chat via /config and can be cleared back to the default. See Inline settings for the full /config menu reference.

Related