Litmus — 話題のニュースを、深く読み解く。 RSS
AI

OpenRouterの新機能「Armor」、危険な操作だけ自動で止める

OpenRouterが公開した「Armor」は、AIコーディングエージェントのツール呼び出しを自然言語ルールで判定し、ユーザーが頼んだ操作は通し、頼んでいない危険な操作だけを自動で止める。

暗い部屋でコーヒーを脇に置き、ノートパソコンでコードを表示している様子

イメージ写真 記事の内容を撮影したものではありません。Photo by Daniil Komov on Pexels

この記事には Amazon アソシエイトのリンクを含みます。

AIコーディングエージェントに「細かい確認はいいから、まとめて進めて」と頼みたくなることがある。だが自動実行モードにすると、頼んでもいないgit pushやファイル削除を無断で実行されないか不安になる。結局、一つひとつの操作を承認し続けることになる。

OpenRouterは、複数のAIモデルを1つのAPIで使えるサービスだ。このOpenRouterが2026年10月15日、この悩みに対する新機能「Armor」を公開した(公式ドキュメント)。AIが実行しようとする操作を、コマンドの文字列ではなく行為の意味で判定する。ユーザーが頼んだ操作は通しながら、頼んでいない危険な操作だけを自動で止める仕組みだ。何を、どうやって見分けているのだろうか。

何を守る機能か

公式ドキュメントは、Armorが守る対象をこう説明する。シェルコマンドを実行できるコーディングエージェントは、mainブランチへの誤ったpush、ディレクトリの削除、.envファイルの外部送信も行えてしまう。多くのハーネス(エージェントを動かす実行環境)は、コマンドごとに人の承認を求めることでこれに対処してきた。

承認を求める方式は安全だが、確認作業そのものが「自動化したい」という目的を損なう。Armorは、この一つひとつの承認を減らしながら、危険な操作だけは自動で止めることを狙っている。対応するのはChat Completions・Responses・Messagesの各APIと、OpenRouterのエージェント実行ツール「Ori」経由のClaude Codeだ。この網は、何を手がかりに危険だと判定しているのだろうか。

判定は文字列ではなく行為を見る

判定は次の順で進む(公式ドキュメント)。

  1. AIがツール呼び出し(コマンド実行やファイル操作)を行おうとすると、OpenRouterはそれをアプリケーションへ即座には渡さない
  2. 呼び出しの内容、利用者が設定したルール、それまでの会話を、別の判定モデルに送る
  3. 判定モデルは、各ルールに一致する確率を返す
  4. Armorはそれらを統合し、ブロックするか許可するかを決める

ここで判定材料になっているのは、コマンドの文字列一致ではない。「それまでの会話」を含めた、行為の意味だ。たとえば「このフォルダの使っていないファイルを整理して」と頼んだ結果、エージェントが.envファイルまで消そうとしたとする。コマンド名だけを機械的に禁止するルールでは、本当に必要な削除まで一律に止めてしまいかねない。Armorは会話の文脈を踏まえ、「ユーザーが本当に求めた操作か」まで踏み込んで判定する設計になっている。

ブロックされた場合、呼び出しは実行されない。該当するルールの名前と、「同じ引数で再試行しないこと」を示す情報がAIに伝えられる。AIは作業を止めるのではなく、別の方法を試すか、ユーザーに状況を説明して会話を続けられる。

この「確率で判定する」という方式は、もう一つ疑問を生む。ユーザー自身が「それでも消して」と明確に頼んだ場合、判定はどちらを優先するのだろうか。

一声でも解除できないルールがある

Armorのルールは3つの階層に分かれる(公式ドキュメント)。

ルールの種類想定する行為ユーザーが会話内で明示的に頼んだ場合allowルールに一致した場合
hard_deny絶対に起きてはいけない行為ブロックされたまま(解除されない)解除されない
soft_deny通常は不適切だが、正当に求められることもある行為許可される許可される
allowsoft_denyの例外を定義する行為(単独ではブロックしない)-

自分はここを読んで、「ユーザーが明示的に頼めば、AIはそれに従うのが自然ではないか」と予想していた。実際、soft_denyはその予想どおりだ。ユーザーが会話の中でその操作を明確に求めていれば通過する。ところがhard_denyは別枠だった。ユーザーがどれだけ強く頼んでも、allowルールに一致しても、判定は解除されない。認証情報の外部送信のような、取り返しのつかない行為を想定した区分だ。

この階層のおかげで、「普段は止めたいが今回は本当に必要」という操作は、ユーザーの一言でsoft_denyから通せる。一方で「本当に起きてはいけない」と決めた操作は、hard_denyに入れておけば、会話の流れに押し切られて実行されることがない。では、このルールを実際に手元のエージェントへ組み込むには、何をすればよいのだろうか。

任意のモデルで自動モードを試す

Oriで任意のモデルを使う

Claude Codeには、操作をいちいち確認しない自動実行モードがある。OpenRouterの「Ori」は、手持ちのエージェントCLI(Claude CodeやCodexなど)を動かすラッパーだ。OpenRouterの認証・モデルカタログ経由で、そのまま実行できる(Ori Harness公式ドキュメント)。

Oriを使うと、Claude Codeの自動モードを、Anthropic以外も含むOpenRouter提供の任意のモデルで動かせる(公式ドキュメント)。コマンドは次のとおりだ。

ori claude --model <モデル> -- --permission-mode auto

ルールを自分で書かなくても、use_cc_style_default_rulesをtrueにすれば、Claude Code向けに用意された既定のルールセットを組み込める。

監査モードで試してから切り替える

ルールをいきなり遮断に使うのは怖い、という場合には監査モードがある。"mode": "audit"を指定すると、判定は通常どおり行われるが、呼び出しは遮断されない。実際のトラフィックで判定結果を確認し、過剰にブロックする・見逃すルールをthreshold(一致とみなす確率のしきい値。既定はdeny系が0.6、allowが0.7)で調整してから、遮断するenforceモードへ切り替える運用を想定している。

導入前に確認しておく条件

今から試す場合、次の条件を踏まえておきたい。

  • Armorは2026年10月時点でベータ版で、設定項目やレスポンスの形式は今後変わる可能性がある
  • ベータ期間中の判定そのものに追加料金はかからない。正式提供(GA)前に料金が発表される予定だ
  • 判定には処理時間が加わる。Claude Code互換のルールセットを使った場合、中央値約279ミリ秒、90パーセンタイルで約334ミリ秒という数値が公式に示されている
  • HIPAAやZero Data Retention、データリージョンが制限されたリクエストでは、Armorを有効にするとエラーになる場合がある(Claude Code経由のリクエストはこの場合も拒否されず、判定が素通りして手元の承認フローに委ねられる)

企業の規制対応環境でこの機能を使うなら、最後の制約が当てはまるかを確認したほうがよい。

まとめ

OpenRouterが2026年10月15日に公開した「Armor」は、AIコーディングエージェントのツール呼び出しを、コマンドの文字列ではなく会話の文脈を踏まえた意味で判定し、危険な操作だけを自動で止める機能だ。ルールはhard_deny(ユーザーが頼んでも解除されない)・soft_deny(ユーザーの明示的な依頼で解除される)・allow(例外)の3階層に分かれる。これにより、「普段は止めたいが今回は必要な操作」と「絶対に起きてはいけない操作」を作り分けられる。

Claude Codeを使っている読者は、Oriのori claude --model <モデル> -- --permission-mode autoを使える。任意のモデルの自動実行モードに、この安全網をかけて試せる。ベータ版で仕様が変わりうる点と、処理時間が数百ミリ秒単位で加わる点は、導入前に踏まえておく条件になる。

この記事の先を読む本を探す

特定の本を勧めるものではありません。検索結果から、いまの版と目次を確かめて選んでください。

コメント

気づきや感想をどうぞ

記事への補足や、読んで考えたことをお寄せください。個人情報や、他の人を傷つける内容の投稿はお控えください。

コメントを読み込んでいます…

    ほかの記事

    最新の記事 →