ブログ

Kimi Code Never Ask:モードと危険なコマンド

Markdown

Never Askモードでは、Kimi Codeは確認せずにrm -rfやshutdownを実行します。3つのモードにはどのような違いがあり、config.tomlで危険なコマンドを禁止するにはどうすればよいでしょうか?

記事の全文を読む

Kimi Codeでは、Never Askモード(/auto)はすべてを自動的に承認します。rm -rf、shutdown、rebootも一度も確認せずに実行します。これらのコマンドを実行する前にエージェントが確認するのは、ほかの2つのモード、Always AskとAsk When Neededだけです。

私自身はClaude Codeで「すべてを許可」を有効にして使っています。そうしないと、はい、はい、はいとクリックし続けることになります。でも10回に1回は、エージェントが独自の判断で動きます。

個人の試作でも大切なファイルや認証情報を露出させる可能性があります。権限を絞った隔離コピーやコンテナと、確認済みバックアップを使ってください。顧客システムではさらに、必要なアクセスだけを持つ別のDB識別主体を与えます。

Kimi Codeの各モードでできること、保護が機能する場所、禁止ルールの設定方法を見ていきましょう。始めましょう。

サービスの使い方については、Ailootのドキュメントをご覧ください。

重要なポイント

Kimi Codeには3つのモードがあります。Always Askがデフォルトです。読み取りは自動で行われ、それ以外は操作ごとに確認します。Ask When Needed(/yolo)は通常の編集を自動で承認しますが、キーを含むファイルへのアクセス、危険なコマンドの実行、プランモードの終了前には確認します。Never Ask(/auto)は何も尋ねず、危険なコマンドへの保護も機能しません。~/.kimi-code/config.tomlのdenyルールで恒久的な禁止を設定できます。また、稼働中のデータベースがある環境ではNever Askを有効にしないほうがよいでしょう。

Kimi Codeの3つのモードにはどのような違いがありますか?

すでにKimi Codeをインストールしているなら、承認パネルを見たことがあるでしょう。エージェントがファイルの編集やコマンドの実行を求め、あなたの「はい」を待つ画面です。以前はモード名がManual、YOLO、Autoだったため、今も古いコマンド/yoloと/autoが使われています。

Always Ask。 デフォルトです。エージェントは確認なしでファイルを読み取りますが、編集とコマンドは毎回個別に確認します。最も時間がかかるモードです。

Ask When Needed。 /yoloで有効にします。通常の編集やコマンドは自動で承認しますが、.env(プロジェクトのパスワードやキーを含むファイル)やサーバーのSSHキーにアクセスする前、shutdown(コンピューターをシャットダウンする)やrm -rf(ゴミ箱を経由せずフォルダー全体を削除する)などの危険なコマンドを実行する前、プランモードを終了する前には確認します。エージェント自身が質問することもあります。

Never Ask。 /autoで有効にします。機密ファイルへのアクセスやプランモードの終了も含め、すべての承認が自動で行われます。エージェントは質問せず、すべてを自分で判断します。

Kimi Codeの3つの権限モード「Always Ask」「Ask When Needed」「Never Ask」の表
Kimi Code CLIの3つの権限モード。

プランモードはShift-Tabまたは/planで別途有効にします。エージェントはまず計画を書いて承認を待ち、その後でファイルを操作します。

私自身が確認なしで作業する場合

Claude Codeでは「すべてを許可」をデフォルトにしていて、新しいチャットごとに有効にしています。これがないと、バイブコーディングは遅すぎます。バイブコーダーはただでさえ理解が浅いのに、そのうえボタンを何度も押さなければなりません。はい、はい、はい、いいえ、いいえ、いいえ、と。

しかし、このモードではエージェントはデータベースの消去を含め、無謀なことを何でもできます。その後で「申し訳ありません」と言うでしょうが、何をしたかによっては、もう元に戻せないこともあります。だから、このモードを使うのは恐れ知らずの人であり、責任は自分で負うことになります。

私のルールはこうです。個人プロジェクトや実験でも、確認なしのモードは、重要ファイルや本番認証のない隔離コピーやコンテナで、権限とバックアップを整えた場合だけ検討します。顧客がいなくても個人ファイルやキーは守られないため、隔離の実効性を確認してください。しかし、本番サーバーにアクセスできる同じプロジェクトでこのモードを有効にすると、たった1つのプロンプトで、エージェントが夜中にデータベースを削除し、本番サイトに変更をデプロイしてしまう可能性があります。

言葉で禁止しても守られない理由

多くの人はエージェントへの指示に「データベースに触るな」と書きます。それで守られるとは思わないでください。「ここには入るな」と言っても、エージェントは必要なときに入って、必要なものを取っていきます。特に中国製のKimiは、設定した禁止事項を何でも破ります。アメリカのモデルは、こうしたことをしないよう、はるかによく訓練されています。

私は今も仕事でKimiを使っています。Kimi K3はとても注意深く、プロジェクトからキーが漏れていないかの確認や、情報収集に使っています。一度、数日で利用上限をすべて使い切りました。Kimiは勝手なことをせず、頼んだことをすべて実行します。だからこそ、Kimiを使うときは隔離が必要です。自分のタスクでどう試したかはこちらに書きました。

必要な隔離は2種類あります。

  1. 設定のコマンドブロックリスト。 一致するツール呼び出しを止めますが、ある表記のパターンだけでは別ツールや同等の操作を完全には防げません。OS、コンテナ、DBの権限と併用します。
  2. データベースを読み取り専用にする。 本番データベースでは、エージェントに読み取り専用権限を持つ専用ユーザーを用意します。そうすれば、Never Askモードでもエージェントはデータベースを消去できません。

危険なコマンドへの保護が機能する場所

Kimi Codeには危険なコマンドへの保護機能が組み込まれており、デフォルトで有効です。Always AskとAsk When Neededでは、shutdown、reboot(再起動)、rm -rfの実行前に確認を求めます。Never Askでは、これらのコマンドは停止されずに実行されます。

例外は2つあります。

  • rm -rfで一時フォルダー/tmpまたは/tempの中身だけを削除する場合は、確認なしで実行されます(バージョン0.43.0以降)。
  • Ask When Neededでは、事前に解析できないターミナルコマンドについてKimi Codeは確認しません(バージョン2.0.1以降)。

バージョン0.40.0では、Autoモードは危険なコマンドをブロックしていました。このブロックは0.41.0で削除されました。

変更前/現在:Kimi Codeの自動モードは以前は危険なコマンドをブロックしていたが、現在はブロックしない
0.40.0:Autoは危険なコマンドをブロックしていた。0.41.0:ブロックが削除された。

設定ファイル~/.kimi-code/config.tomlの[permission]セクションにdangerous_command_guard = falseを設定するか、変数KIMI_CODE_DANGEROUS_COMMAND_GUARD=falseを使うと、この保護を無効にできます。開発者は、危険なコマンドがすでに外部で遮断されている環境でのみ無効にすることを推奨しています。

Kimi Codeで恒久的な禁止を設定する方法

エージェントが何かを変更しようとすると、Kimi Codeに承認パネルが表示されます。

  • 承認:矢印キーとEnterを使うか、1、2、3を直接押します。
  • 拒否:Esc、Ctrl-C、またはCtrl-D。
  • このセッションで承認:同じ種類の呼び出しをセッション終了まで承認します。
  • 恒久ルール:設定ファイルで恒久的な許可ルールまたは禁止ルールを設定します。

恒久ルールは設定ファイル~/.kimi-code/config.tomlの[[permission.rules]]ブロックに記述します。Kimi Codeは上から順番に確認し、最初に一致したルールを適用するため、禁止ルールは許可ルールより上に置きます。各ルールにはdecisionを設定します。allow(即時に許可)、deny(即時に拒否)、ask(毎回確認)です。

rm -rfは禁止し、その他すべてのターミナルコマンドは確認する設定です。

[[permission.rules]]
decision = "deny"
pattern = "Bash(rm -rf*)"

[[permission.rules]]
decision = "ask"
pattern = "Bash"

ターミナルコマンドの場合、パターンは括弧内に指定します:Bash(command-pattern)。ファイルの読み取りではRead(path-pattern)を指定します。MCPツール、AgentSwarm、独自ツールは禁止する場合、正式名称を指定する必要があります。

技術的な知識がなく、設定ファイルを開きたくない場合は、下のプロンプトをエージェントに貼り付けるだけで構いません。エージェントが制限すべき項目を自分で探します。ただし、まずどのくらい作業が遅くなるかを説明させてください。確認なしの作業に慣れていると、禁止ルールを追加した後に使えなくなるものもあります。以下が私のプロンプトです。

プロジェクトを分析し、本番サーバー、ステージングデータベース、本番用キーにアクセスできるかどうかを教えてください。アクセスできる場合は、フォルダー全体の削除、変更履歴を元に戻せない形で書き換えるコマンド、本番データベースに直接実行するコマンドを禁止する保護を設定してください。最初に「変更前 - 変更後」の形式で計画を示し、作業がどのくらい遅くなるかも率直に教えてください。

Claude Codeで同じ設定をする方法は別の記事で説明しました。また、Claude CodeのAutoモードがエージェントの操作をどのように確認するかもご覧ください。

どのモードを選ぶべきか

  • エージェントの操作をすべて確認したい場合: デフォルトのAlways Ask。読み取り以外はすべて確認します。
  • 顧客のいない個人プロジェクトや試作: Always AskかAsk When Neededから始めます。Never Askは、重要なデータやキーのない、権限を絞った使い捨ての隔離コピーでだけ検討します。顧客がいないこと自体は安全性を増やしません。
  • 実際の顧客がいて、サーバーにもアクセスするプロジェクトの場合: Never Askを有効にしないでください。config.tomlにdenyルールを設定し、エージェントにはデータベースの読み取り専用アクセスを与えます。

また、プロジェクトとは別のマシンにデータベースをバックアップしてください。ほかの安全ルールは別の記事にまとめています。

確認モードをプロジェクトのアクセス権限に合わせ、どこに禁止ルールが必要か確認しましょう。

出典

  • Kimi Code:操作と入力 — 3つの権限モード、/yolo、/auto、各モードにおける危険なコマンドへの保護、承認パネル、プランモード。
  • Kimi Code:設定ファイル — [[permission.rules]]、ルールを確認する順序、dangerous_command_guard、KIMI_CODE_DANGEROUS_COMMAND_GUARD、config.tomlのパス。
  • Kimi Code:変更履歴 — バージョン0.40.0、0.41.0、0.43.0、2.0.1:危険なコマンドへの保護と、モード名の変更。

Ailootについて詳しく知る。

詳細を見る

Kimi Code Never Ask:モードと危険なコマンド:よくある質問

顧客のいない個人プロジェクトならNever Askでも安全ですか?

いいえ。個人の大切なファイルを壊したり、キーを漏らしたりする可能性があります。確認なしのモードを考える前に、権限制限、使い捨ての隔離コピーやコンテナ、バックアップを用意してください。

rm -rfのdenyルールで隔離を代用できますか?

いいえ。一致する呼び出しを止めても、同等の操作や別のツールまで網羅しません。重要データと本番の認証をアクセス範囲外へ置き、DBには必要権限だけの別の識別主体を使います。

すべての記事