— 読み取り系のみ自動化し、破壊系はブロックする設計 —
1. 背景
本番VPS環境で GitHub Copilot Agent を利用すると、
sedgrepgit diffcurlls
のような調査コマンド実行時に毎回
Run bash command? Allow / Skip
の確認が表示される。
調査中心の作業ではこの確認が大きなストレスになる。
しかし、
rmsudopm2 restartgit pushsystemctl
などを誤って実行すれば、本番停止やSEO評価低下につながる。
そこで本記事では、
読み取り系は自動承認
変更・破壊系は必ず手動承認
という安全バランス設計を紹介する。
2. 設定する場所
SSH接続でVPSを操作している場合は、
Ctrl + Shift + P
→ Preferences: Open Remote Settings (JSON)
に記載する。
※ Remote設定にすることで、本番VPS接続時のみ適用される。
3. 推奨設定(本番用)
// ============================================================
// GitHub Copilot 本番VPS用 自動承認設定
// 読み取り・調査系のみ自動承認
// 破壊・変更系は必ず手動承認
// ============================================================
"chat.tools.global.autoApprove": false,
"chat.tools.terminal.autoApprove": {
// ===== 安全:読み取り・確認系 =====
"^(ls|pwd|whoami|id|uname|hostname|date)(\\s|$).*": true,
"^(cat|less|more|head|tail|nl|wc|grep|egrep|fgrep|awk|sed)(\\s|$).*": true,
"^(find|stat|file|readlink|realpath)(\\s|$).*": true,
"^(ps|top|htop|ss|netstat|lsof|curl|wget)(\\s|$).*": true,
"^(df|du|free|uptime)(\\s|$).*": true,
"^(git status|git log|git diff|git show|git branch|git rev-parse)(\\s|$).*": true,
"^(node -v|npm -v|pnpm -v|python3 -V)(\\s|$).*": true,
"^(npm run (check|lint|typecheck|test)(\\s|$).*)": true,
"^(pnpm (run )?(check|lint|typecheck|test)(\\s|$).*)": true,
// ===== 危険:削除・変更・デプロイ系 =====
"^(rm|rmdir|mv|cp|tee|truncate|dd)(\\s|$).*": false,
"^(chmod|chown|chgrp|setfacl)(\\s|$).*": false,
"^(sudo)(\\s|$).*": false,
"^(git add|git commit|git push|git reset|git clean|git checkout|git switch|git merge|git rebase)(\\s|$).*": false,
"^(npm (i|install|ci|update)|pnpm (add|install|update)|yarn (add|install|upgrade))(\\s|$).*": false,
"^(systemctl|service|pm2|kill|pkill|nohup)(\\s|$).*": false,
// その他はすべて拒否
".*": false
}
4. 設計思想
4.1 自動承認するもの
- ファイル閲覧
- ログ確認
- Gitの履歴確認
- ディスク容量確認
- ポート確認
- lint/test
つまり「観察行為」のみ。
4.2 ブロックするもの
- 削除
- 上書き
- 権限変更
- サービス再起動
- パッケージ変更
- Gitの書き込み操作
本番では「変更」は必ず人間が確認する。
5. なぜ global.autoApprove を true にしないのか?
"chat.tools.global.autoApprove": true
にすると、
Copilotが生成した全コマンドが無条件実行される。
これは
- 想定外の rm
- 意図しない npm install
- systemctl restart
が起こる可能性を含む。
本番では極めて危険。
6. 運用ベストプラクティス
6.1 本番は「観察専用」
変更は
- staging
- deploy script
- CI/CD
経由で行う。
6.2 Copilotは「診断エージェント」として使う
本番では
調査補助AI
として扱うのが最適。
7. トラブル時の対処
もしAgentが固まったら:
Ctrl + Shift + P
→ Developer: Restart Extension Host
または
Close Remote Connection
→ 再接続
8. まとめ
本番VPSでのCopilot自動承認は、
利便性を上げながらも、破壊を防ぐ設計が重要
完全自動化ではなく、
限定自動化 + 人間の最終判断
が最も安全である。


コメント