AIコーディング 2026.04.21

Claude Codeのリモート実行時にローカルから権限承認する方法【tmux・Docker・CI対応】

タグ:ClaudeCode / Anthropic / AIエージェント / 開発ツール / CLI

問題:リモートで止まるパーミッションリクエスト

通常(ローカル実行):
  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

あわせて読みたい

参考ソース