CommandMate のセキュリティモデルと安全な利用方法について説明します。
CommandMate はローカルマシン上で動作します。
- アプリケーション本体、SQLite データベース、tmux セッションはすべてローカルで完結
- 外部への通信は各 CLI ツール(Claude Code / Codex CLI)自体の API 呼び出しのみ
- ユーザーデータを外部サーバーに送信することはありません
本ツールは Claude Code や Codex CLI などの CLI ツールを操作する UI です。
- 各 CLI ツール自体の権限設定がそのまま適用されます
- 本ツールが CLI ツールの権限を拡張・変更することはありません
- 各 CLI ツールが実行できる操作の範囲は、そのツール側の設定に従います
外出先からアクセスしたい場合に Cloudflare Tunnel を利用できます。
- Cloudflare Tunnel は任意であり、ローカル利用のみであれば不要です
- LAN 内アクセスの場合は
CM_BIND=0.0.0.0の設定が必要です。リバースプロキシでの認証を推奨します
CM_ROOT_DIRには git 管理された特定のディレクトリのみを指定する- Claude Code の権限設定で、操作対象を対象リポジトリ内に限定する
- 外部公開時はリバースプロキシでの認証を設定する(詳細:
docs/security-guide.md)
CM_ROOT_DIRにホームディレクトリ全体(~)を指定すること- リバースプロキシ認証を設定せずに
CM_BIND=0.0.0.0でサーバーを公開すること - Claude Code に広範なファイル操作権限を与えた状態で Auto Yes モードを有効にすること
- Auto Yes モードの有効化時に確認ダイアログを表示します
- Auto Yes モードは CLI ツールの確認プロンプトを自動承認する機能であり、意図しない操作が実行されるリスクがあります
- 有効時間は 1時間(デフォルト)/ 3時間 / 8時間 から選択可能です
- 1時間: 3,600,000ミリ秒
- 3時間: 10,800,000ミリ秒
- 8時間: 28,800,000ミリ秒
- 選択した有効時間が経過すると自動でOFFになります
- セキュリティ実装:
- worktreeIdのフォーマット検証(パストラバーサル対策)
- JSON parseエラーハンドリング
- duration型検証(number型であることを確認)
- ホワイトリスト検証(3つの許可された値のみ受け入れ)
- デフォルト値フォールバック(未指定時は1時間)
- 不正な値は400エラーで拒否
リスクシナリオ:
- 離席中の広範なファイル操作: 長時間のAuto-Yes有効化中にユーザーが離席した場合、CLI ツールが確認プロンプトに対して自動で承認し続け、広範なファイル削除やリファクタリングが自動承認される可能性があります
- 予期しないワークツリー外操作:
CM_ROOT_DIRの設定が広範な場合、意図しないディレクトリへの操作が自動承認される可能性があります - 長時間にわたる自動応答の蓄積: 長時間の間に多数の自動応答が蓄積され、レビューが困難になる可能性があります
ベストプラクティス:
- 最小権限の時間選択: 作業に必要な最小限の時間を選択する。迷った場合はデフォルトの1時間を推奨
- CM_ROOT_DIRの限定設定: 長時間Auto-Yes使用時は、
CM_ROOT_DIRを作業対象のworktreeディレクトリに限定し、影響範囲を制限する - 離席時のOFF推奨: 長時間離席する場合は、残り時間に関わらずAuto-Yesを手動でOFFにすることを推奨
- 8時間使用の想定ユースケース: 長時間のバッチ処理的な開発タスク(大規模リファクタリング、テスト網羅的実行等)で、ユーザーが定期的に進捗を確認できる状況での使用を想定
技術的安全性:
- TypeScript型安全性:
AutoYesDurationリテラル型により、コンパイル時に不正な値を排除 - 型ガード関数:
isAllowedDuration()により実行時の型検証を実施 - 共有設定ファイル:
src/config/auto-yes-config.tsによる一元管理でサーバー・クライアント間の不整合を防止 - 5層防御: format → JSON parse → type → whitelist → default の多層検証
- すべてのチャットメッセージは SQLite データベースに記録されます
- Claude Code の詳細出力は
.claude_logs/にMarkdown形式で保存されます - 操作履歴をいつでも確認できます
- 本ツールは Claude Code を経由してファイル操作を行うため、重要なファイルの削除や変更が発生する可能性があります
- 重要なリポジトリで利用する場合は、事前にバックアップを取ることを推奨します
- git 管理下のディレクトリであれば、
git stashやgit checkoutで復元が可能です - Auto Yes モードは内容を理解した上で使用してください