バイブコーディングの良さは、面倒な実装をAIに任せて、自分は手を動かさずに済むことです。
なのに、VS CodeでClaude Codeを使うと、操作のたびに「はい/いいえ」を聞かれます。確認に答えないと先へ進まないので、結局パソコンの前に張り付いて、ボタンを押し続けることになる。自動化で楽をするはずが、監視から離れられない。これは本末転倒です。バイブコーディングをやる人なら、一度は感じる引っかかりだと思います。
先に言っておくと、この「はい/いいえ」は、設定を変えるだけでほぼ聞かれなくできます。 具体的な設定手順は、この記事の最後にまとめます。
ただ、手順だけ真似してもうまくいきません。「どこまで聞かれないようにしていいか」は、あなたのアプリが今どの段階にいるかで変わるからです。試作中ならほぼ全部オフにして、一気に進めてしまっていい。けれど、アプリを公開してユーザーが本格的に使い始めたら、止めるべき操作だけは残しておかないと危ない。ここを取り違えて全部オフにすると、取り返しのつかない事故につながります。
そこでこの記事は、まず「そもそも何を聞かれていて、どれを止めるべきか」を整理し、最後に「あなたの段階に合わせて聞かれなくする設定手順」までまとめます。表示される英語の細部が分からなくても大丈夫です。読み終えるころには、自分のアプリに合った設定が自分で決められるようになります。
Claude Codeの「はい/いいえ」は、結局3つのことしか聞いていない
英語のメッセージが難しく見えても、Claude Codeが確認してくるのは、突き詰めると次の3種類だけです。
ひとつ目は「このファイルを書き換えていいか」。コードや設定ファイルを編集・新規作成しようとしているときの確認です。
ふたつ目は「このコマンドを実行していいか」。パソコンに何か命令を出す前の確認です。npm install(必要な部品を取ってくる)や git commit(変更を記録する)のような日常的なものから、rm(ファイルを削除する)のような危ないものまで、ここに含まれます。
3つ目は「外に通信していいか」。Webで何かを調べる、外部のサービスにアクセスする、といった確認です。
意味不明に見えた確認も、この3つのどれかだと分かれば、ぐっと判断しやすくなります。そして判断の基準は、たったひとつ。取り返しがつくか、つかないかです。
意味が分からない確認は、そのまま別のAIに聞く
とはいえ、表示されたコマンドそのものが何をするのか分からない、ということは普通に起きます。私もそうです。そんなときに無理して勘で「はい/いいえ」を選ぶ必要はありません。
一番手っ取り早いのは、その確認に出ているコマンドや英文を、そのままコピーして別のAIに聞くことです。Claude Code自身ではなく、ClaudeのデスクトップアプリでもブラウザのClaudeでもChatGPTでも構いません。別のチャットを開いて、こう貼り付けるだけです。
このコマンドは何をするものですか?取り返しのつかない操作(削除・上書き・公開など)が含まれますか?初心者にも分かるように教えてください。
git push --force origin main
すると、そのコマンドの意味と危険度が日本語で返ってきます。それを読んでから「はい/いいえ」を決めれば、勘で押すより何倍も安全です。分からないものは無理に判断せず、まずAIに翻訳させる。これは初心者にとって、一番現実的で確実なやり方です。
ひとつだけ注意点があります。コマンドの中にパスワードや鍵のような秘密の情報が含まれている場合は、その部分は伏せ字にしてから聞いてください。中身をそのまま外部のAIに貼ると、情報が漏れる原因になります。
判断の9割は「今アプリがどの段階にいるか」で決まる
ここが私の一番伝えたい点です。同じ「はい/いいえ」でも、答えはアプリの段階で変わります。
試作の段階では、コードはまだ作り直せます。git(変更履歴を管理する仕組み)を使っていれば、おかしくなっても前の状態に戻せます。だから多少の失敗は事故になりません。スピードを優先して、基本「はい」で進めて問題ない段階です。
一方、アプリが大きくなり、外部に公開した後は話が違います。間違って大事なファイルを消す、公開済みの履歴を壊す、秘密の情報を外に出す。これらは取り返しがつきません。ここからは「全部はい」が危険になります。
| 開発フェーズ | 基本スタンス | 何を気にするか |
|---|---|---|
| 試作・プロトタイプ | スピード優先、基本「はい」 | 動くものを早く作る。壊れてもgitで戻せる |
| 機能追加・成長期 | 編集は任せ、コマンドは見る | 削除や設定変更の確認は中身を読む |
| 公開後・運用期 | 危険なものだけ「いいえ」 | 取り返しのつかない操作を止める |
自分のアプリが今どこにいるかを意識するだけで、判断の大半は決まります。
試作段階:毎回聞かれるのが面倒なら、2つの選択肢
試作中は基本「はい」でいい。とはいえ、1操作ごとに手を止めて確認するのは、バイブコーディングの良さを完全に殺します。PCの前にずっと張り付くことになり、本末転倒です。
そこで、確認の手間を先回りで減らす方法が2つあります。どちらもモードを切り替えるだけです。
モードの切り替えは Shift+Tab キーです。押すたびに「Ask before edits(標準)」→「Edit automatically」→「Plan mode」と順に切り替わり、今どのモードかが画面に表示されます。条件を満たしていれば、ここに「Auto mode」も加わります(条件は後で説明します)。狙ったモードが出るまで Shift+Tab を何回か押すだけです。
ひとつ目は「Edit automatically」(内部名は acceptEdits)。ファイルの編集と、フォルダ作成・移動・コピーといった基本的なファイル操作を、いちいち聞かずに進めてくれるモードです。コードを書く部分が自動になるので、体感がかなり軽くなります。git diff(変更箇所の差分)で後からまとめて確認できるので、レビューは後回しにできます。
ふたつ目は「Auto mode」。これがこの記事の本命です。
Auto modeは「全部素通し」ではない。ここを誤解しない
Auto modeは、ファイル編集もコマンド実行も含めて、基本的に確認なしで進めてくれるモードです。ただし重要なのは、何でも素通しにする危険モードではないという点です。
Auto modeでは、Claude本体とは別の「審査役」のモデルが、各操作を実行前にチェックします。本番環境へのデプロイ、大量のファイル削除、外部への情報送信、ネットからコードを取ってきて実行する、といった危険な操作はブロックされます。安全な操作だけ自動で進み、危ないものは止まる。だから「監視から解放されつつ、暴走は防ぐ」が両立します。
さらに、審査役が同じ操作を続けてブロックした場合(3回連続、または合計20回)、Auto modeは自動で一時停止し、また確認を出す状態に戻ります。安全側に倒れる設計になっています。
なお、Auto modeを使うには条件があります。Claude Codeのバージョンが v2.1.83 以降であること、モデルが Opus 4.6 以降または Sonnet 4.6 であること。初めて選ぶときは、一度だけ確認画面が出ます。Auto modeは現在リサーチプレビュー扱いで、確認を減らしてはくれますが、安全を100%保証するものではありません。大事な操作は最後は自分の目で見る、という姿勢は持っておきます。
ちなみに、--dangerously-skip-permissions(設定名は bypassPermissions)という、本当に全部素通しにするモードもあります。名前に「dangerously(危険なことに)」と入っているとおり、審査役もいない完全なノーチェックです。使い捨ての検証環境以外では使わないのが無難です。Auto modeとは別物として覚えておきます。
「常にAuto mode」にしたいなら、ユーザー設定に書く
モードは毎回手で選んでもいいですが、最初から常にAuto modeで起動したい場合は、設定ファイルに書いておけます。
ここで初心者がつまずく落とし穴がひとつあります。この設定は「ユーザー設定」に書かないと効きません。プロジェクトの中(リポジトリ側)の設定ファイルに書いても、Auto modeに関しては無視される仕様です。リポジトリが勝手に自分をAuto modeにできてしまうと危ないからです。
ユーザー設定ファイルの場所は、Windowsなら自分のユーザーフォルダの直下にある .claude フォルダの中、C:\Users\(自分のユーザー名)\.claude\settings.json です。Mac や Linux なら ~/.claude/settings.json になります。このファイルに次の内容を書きます。
{
"permissions": {
"defaultMode": "auto"
}
}
これで、起動するたびにAuto modeから始まります。なお、VS Code拡張の設定画面にある claudeCode.initialPermissionMode という項目では Auto mode を指定できないので、常時Auto化はこのユーザー設定ファイル経由が唯一のルートになります。
公開フェーズ:危険なものだけ「聞かれる」状態を作る
ここからが、アプリが大きくなった後の話です。
私はバイブコーディングで作ったアプリを外部に公開する段階で、設定ファイルに「自分の判断」をルールとして書き込むようにしました。考え方はシンプルです。取り返しのつかない操作だけ禁止して、日常の開発作業は自動で許可する。
具体的には、プロジェクトの .claude/settings.json に、次のような許可リスト(allow)と禁止リスト(deny)を書いています。これは私が実際に使っているものです。
{
"permissions": {
"defaultMode": "acceptEdits",
"deny": [
"Bash(rm -rf /*)",
"Bash(rm -rf ~*)",
"Bash(rm -rf .git*)",
"Bash(sudo *)",
"Bash(git reset --hard*)",
"Bash(git clean -f*)",
"Bash(git push --force*)",
"Bash(git push -f*)",
"Bash(npm publish*)",
"Read(.env)",
"Edit(.env)"
],
"allow": [
"Bash(npm *)",
"Bash(npx *)",
"Bash(node *)",
"Bash(git add *)",
"Bash(git commit *)",
"Bash(git status*)",
"Bash(git diff*)",
"Bash(git log*)",
"Bash(git push*)",
"WebSearch"
]
}
}
禁止リストに入れているのは、性質で分けると3種類です。取り返しのつかない削除(rm -rf 系)、履歴を壊す操作(git reset --hard、強制的な上書き送信である force push)、秘密の情報の読み書き(パスワードや鍵を入れておく .env ファイル)。それと、外部に公開してしまう npm publish です。
許可リストに入れているのは、毎日のように使う開発作業です。部品の取得、変更の記録、状態や差分の確認、通常の送信。これらは安全なので、いちいち聞かれないようにしています。
注目してほしいのは、送信の扱いです。通常の送信(push)は許可リストに入れて自動で通し、強制上書きの送信(force push)だけを禁止リストに固定しています。普段の作業は止めず、履歴を壊す操作だけ止める。この一行の使い分けが、まさに「危険なものだけ聞かれる状態」です。
こうしておくと、開発のリズムは崩れないまま、本当に危ない操作のときだけClaude Codeが立ち止まります。「英語が分からないから全部はい」でも「怖いから全部いいえ」でもない、自分の判断を一度ルール化した状態が作れます。
なお、禁止リストは万能ではなく、すり抜けの報告もあります。本当に守りたい操作は、この設定に加えて二重で対策しておくと安心です。
まとめ
- Claude Codeの確認は「ファイル編集していい?」「コマンド実行していい?」「外に通信していい?」の3種類だけ。判断基準は「取り返しがつくか」のひとつ。
- 確認に出ているコマンドの意味が分からなければ、そのままコピーして別のAI(Claudeアプリ・ChatGPTなど)に「何をするコマンドか・危険か」を聞く。勘で押さない。
- 答えはアプリの開発フェーズで変わる。試作中はスピード優先で基本「はい」。公開後は危険なものだけ止める。
- 試作の手間を減らすなら Edit automatically か Auto mode。Auto modeは審査役のモデルが危険操作だけブロックする、安全寄りの自動進行。全部素通しの bypassPermissions とは別物。
- 常時Auto modeは、プロジェクト側ではなくユーザー設定
C:\Users\(自分のユーザー名)\.claude\settings.jsonにdefaultMode: autoと書く。 - 公開フェーズは settings.json の allow/deny に自分の判断をルール化する。取り返しのつかない操作だけ deny、開発ループは allow。ここまで作れば、PCの前に張り付かなくても安心して任せられます。
「自分のアプリ、今このフェーズでどこまで自動化していいんだろう」「この設定で危ない操作を止められているか不安」という方は、無料の30分オンライン診断で一緒に確認できます。最初に判断軸を決めておくことが、その後の開発のスピードと安全を両方守ります。
この記事の技術を、現場で実装したい方へ
AI×IoTの技術顧問として、月額契約で継続伴走しています。PoC設計・技術判断・組織設計・ベンダー管理・実装支援まで、現場で動くまで一緒に進めます。受託開発(請負)ではありません。
→ AI技術顧問サービスの詳細 / 無料30分オンライン診断 / 料金一覧






LEAVE A REPLY