AIコーディング 2026.04.21
Claude Codeのリモート実行時にローカルから権限承認する方法【tmux・Docker・CI対応】
問題:リモートで止まるパーミッションリクエスト
通常(ローカル実行):
claude → ターミナルに権限確認が表示 → 即座にyesを入力 → 継続
問題(リモート・長時間実行):
SSHサーバーでclaude → 権限確認が表示 → SSH接続が切れる
↓
エージェントが無限待機で止まる
この問題を解決する3つのパターンを解説します。
パターン1:tmuxで再接続承認(推奨)
最も安全でシンプルな方法です。
# Step 1: リモートサーバーにSSH接続
ssh user@your-remote-server
# Step 2: tmuxセッションを作成してClaude Codeを起動
tmux new-session -s claude-agent
cd /path/to/project
claude "このプロジェクトのテストを全部実行してエラーを修正して"
# Step 3: 権限確認が出たらCtrl+b, dでデタッチ(SSHを切っても継続)
# Ctrl+b, d
# 後から権限承認するための再接続手順
# ローカルのターミナルから
ssh user@your-remote-server
# セッションの一覧を確認
tmux list-sessions
# claude-agent: 1 windows (created Mon Aug 19 09:30:00 2026)
# セッションにアタッチ(権限確認画面がそのまま表示される)
tmux attach-session -t claude-agent
# 表示された承認プロンプトに応答(y/nをタイプしてEnter)
# その後また Ctrl+b, d でデタッチして離席可能
パターン2:—allowedToolsで事前に許可ツールを制限
許可するツールを事前に指定することで、承認ダイアログの回数を最小化します。
# 特定の操作だけを許可してスキップ可能にする
claude \
--allowedTools "Read,Edit(src/**),Bash(npm test),Bash(npm run lint)" \
"src/以下のコードをリファクタしてテストを通して"
# Readは全ファイル許可、Editはsrc/配下のみ、Bashはnpm test/lintのみ
# それ以外の操作(ファイル削除・外部コマンド等)は確認ダイアログが出る
# より厳しい制限の例(重要な本番プロジェクト向け)
claude \
--allowedTools "Read" \
--disallowedTools "Write,Edit,Bash" \
"このコードをレビューして問題点を列挙して"
# 読み取り専用モード。コードを変更せずにレビューだけさせる
パターン3:—dangerously-skip-permissions(CI/CD用、要注意)
完全自動化が必要なCI環境向け。隔離環境限定で使用してください。
# .github/workflows/ai-review.yml
name: Claude Code Review
on:
pull_request:
types: [opened, synchronize]
jobs:
ai-review:
runs-on: ubuntu-latest
# ⚠️ 権限スコープを最小化
permissions:
contents: read
pull-requests: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install Claude Code
run: npm install -g @anthropic-ai/claude-code
- name: Run Claude Code Review
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: |
# --allowedToolsで操作を限定、かつ--printで非インタラクティブ
claude \
--print \
--allowedTools "Read,Bash(git diff)" \
"PRの変更点を分析してコードレビューコメントを日本語で出して。
問題があれば優先度(高/中/低)と修正案も含めて。" \
> review_output.txt 2>&1
cat review_output.txt
- name: Post Review Comment
uses: actions/github-script@v7
with:
script: |
const fs = require('fs')
const review = fs.readFileSync('review_output.txt', 'utf8')
github.rest.pulls.createReview({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.issue.number,
body: `## AI Code Review\n\n${review}`,
event: 'COMMENT'
})
Dockerで隔離されたClaude Code環境を作る
# claude-agent.dockerfile
FROM ubuntu:22.04
RUN apt-get update && apt-get install -y \
nodejs npm git curl \
&& npm install -g @anthropic-ai/claude-code
WORKDIR /workspace
# エントリーポイントスクリプト
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
#!/bin/bash
# entrypoint.sh
# ⚠️ コンテナ内なので --dangerously-skip-permissions が安全に使える
claude \
--dangerously-skip-permissions \
--print \
"$@"
# 使い方: 隔離コンテナ内でClaude Codeを実行
docker run --rm \
-e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
-v $(pwd):/workspace \
claude-agent \
"このプロジェクトのすべてのTypeScriptエラーを修正して"
# コンテナが終了すると変更は消える(本番への影響なし)
# git diff を使って変更内容だけ取り出すことも可能
セッション管理の便利コマンド集
# Claude Codeのセッション一覧
claude --list-sessions
# 特定セッションを再開
claude --resume <session-id>
# セッションを指定してリモートで非インタラクティブ実行
claude --resume <session-id> --print "現在の作業状況を教えて"
# tmuxセッション一覧(リモートサーバー上で)
tmux list-sessions
# 特定のtmuxセッションを強制終了
tmux kill-session -t claude-agent
あわせて読みたい
- Claude Code制御ルールが機能しない原因と5つの検証方法
- Claude Codeで午前中に機能完成する方法|16のロール活用で爆速開発
- Claude Code「Connection timeout」エラーの原因と解決方法