<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Dan</title>
    <description>The latest articles on DEV Community by Dan (@dan_288d398451d57).</description>
    <link>https://dev.to/dan_288d398451d57</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3890829%2Fb7142ec3-12f2-4b7f-b7e7-d151c40a0691.png</url>
      <title>DEV Community: Dan</title>
      <link>https://dev.to/dan_288d398451d57</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dan_288d398451d57"/>
    <language>en</language>
    <item>
      <title>Approve Claude Code permission requests remotely</title>
      <dc:creator>Dan</dc:creator>
      <pubDate>Tue, 21 Apr 2026 13:49:03 +0000</pubDate>
      <link>https://dev.to/dan_288d398451d57/approve-claude-code-permission-requests-remotely-3bgm</link>
      <guid>https://dev.to/dan_288d398451d57/approve-claude-code-permission-requests-remotely-3bgm</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;🔔 cc-remote-approval — so Claude Code's long-running tasks don't stall waiting for your approval&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;😩 The pain&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You kick off a long Claude Code task, step away to do something else, come back —&lt;br&gt;
and the agent is frozen on "Approve this Bash?" / "Pick an option" / "Fill in this&lt;br&gt;
  MCP form." Those twenty minutes? Nothing moved.&lt;/p&gt;

&lt;p&gt;Every approval point in Claude Code is a wall:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bash / Edit / Write permissions&lt;/li&gt;
&lt;li&gt;AskUserQuestion options&lt;/li&gt;
&lt;li&gt;MCP Elicitation forms&lt;/li&gt;
&lt;li&gt;The idle wait at the end of every turn&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The moment you're away from the screen, the agent stops working.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5z8phbbbg7ez8q5xr2lb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5z8phbbbg7ez8q5xr2lb.png" alt="cc-remote-approval" width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✨ The fix&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;cc-remote-approval is a Claude Code plugin. When Claude needs approval or asks a&lt;br&gt;
question:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The native local dialog still shows (no replacement, no hijacking)&lt;/li&gt;
&lt;li&gt;A background hook starts a timer — 20s by default&lt;/li&gt;
&lt;li&gt;No local response → the request is forwarded to Telegram, with full context and
buttons&lt;/li&gt;
&lt;li&gt;On your phone, tap ✅ Allow / ❌ Deny / ⭐ Always, or type an option&lt;/li&gt;
&lt;li&gt;Whichever side responds first wins; the other side auto-syncs&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;📱 On the subway, between meetings, scrolling before bed — you're away from the&lt;br&gt;
screen, the agent keeps moving.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🛠 Features&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pure Python stdlib, zero third-party dependencies&lt;/li&gt;
&lt;li&gt;Local-first: no external calls other than the Telegram API&lt;/li&gt;
&lt;li&gt;Concurrency-safe across sessions: flock + pending queue — multiple agents can
request approvals in parallel without crossing wires&lt;/li&gt;
&lt;li&gt;Hook-level integration — works across CLI, desktop, and plugins&lt;/li&gt;
&lt;li&gt;📖 Full context button: expand the last N turns of the conversation in one tap
when the truncated preview isn't enough&lt;/li&gt;
&lt;li&gt;SessionStart hint injection: steers Claude toward the AskUserQuestion tool so
choices render as buttons on your phone, instead of making you type a number&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;🔒 Security&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;100% local: data flows directly between your machine ↔ Telegram — no self-hosted
server, no cloud relay, zero analytics or telemetry&lt;/li&gt;
&lt;li&gt;Pure Python stdlib, zero third-party deps → minimal supply-chain surface&lt;/li&gt;
&lt;li&gt;Bot token stays in process memory: never appears in ps, never written to logs.
Sensitive content (API keys, passwords, tokens, etc.) is auto-masked before anything leaves your machine&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;🤔 Anthropic already has options — why build another?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Anthropic ships /remote-control and an official telegram plugin, but in practice&lt;br&gt;
both have constraints:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;/remote-control is web-based: you have to keep a browser tab open and actively
watch it; no push-notification model; doesn't support the Claude Code desktop app.&lt;/li&gt;
&lt;li&gt;Official telegram plugin: concurrent sessions steal each other's messages; the
setup/startup flow is a bit clunky; also no desktop support.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;💡 Recommended config: flip Stop hook on for full-workflow coverage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Set &lt;code&gt;stop_hook_enabled: true&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Before the agent idles each turn, Telegram gets a message with Continue /
Dismiss buttons&lt;/li&gt;
&lt;li&gt;Tap Continue, reply with your next instruction, and the agent picks it up&lt;/li&gt;
&lt;li&gt;The whole loop — approvals, questions, forms, "what's next?" — can now happen
from your phone&lt;/li&gt;
&lt;li&gt;Side effect: each turn blocks for up to stop_wait_seconds (default 180s); if
you're at the screen and don't want to wait, just press ESC in Claude Code to skip&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/Manta-Network/cc-remote-approval" rel="noopener noreferrer"&gt;Manta-Network/cc-remote-approval&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Install:&lt;br&gt;
&lt;code&gt;/plugin marketplace add Manta-Network/cc-remote-approval&lt;br&gt;
/plugin install cc-remote-approval@manta&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Or just paste the GitHub link into Claude Code and ask it to install.&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-2046585254417461386-132" src="https://platform.twitter.com/embed/Tweet.html?id=2046585254417461386"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-2046585254417461386-132');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=2046585254417461386&amp;amp;theme=dark"
  }



&lt;/p&gt;

</description>
      <category>claude</category>
      <category>ai</category>
      <category>claudeplugin</category>
      <category>claudecode</category>
    </item>
  </channel>
</rss>
