0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Hermes Agent を読み解く — セキュリティと安全運用

連載「Hermes Agent を読み解く」第10回(最終回)。

はじめに — 便利さの裏側を清算する

ここまで 9 回、Hermes の能力を称えてきた。会話ループ、記憶の再注入、71 のツール、マルチエージェント、Kanban、40 超の露出面、拡張機構。だがこれらはすべて諸刃だ。ツールを呼べるエージェントは、間違ったツールを呼ぶこともできる。多面に開かれたコアは、多面から攻撃されうる。最終回は、これまで「第10回で」と先送りしてきたリスクを清算し、安全運用の指針をまとめる。

1. 脅威モデル

SECURITY.md が中心に据える脅威は、プロンプトインジェクションだ。信頼できない入力(Web ページ、受信メッセージ、ツールの戻り値)の中に、エージェントへの命令が紛れ込み、それが破壊的なコマンド実行につながる——これが最大の懸念。

ここで重要な設計思想がある。Hermes のプロセス内ヒューリスティクス(第5回の DANGEROUS_PATTERNS など)は、「境界(security boundary)ではなく事故防止(accident prevention)」と位置づけられている。つまり「rm -rf を弾く」のは、悪意ある攻撃者を止める防壁としてではなく、エージェントのうっかりを減らす安全装置として設計されている。本気の攻撃者を前提とした境界は、プロセスの外(OS 権限、コンテナ、ネットワーク分離)で引くべき——という割り切りだ。この区別を誤解すると「Hermes がパターンマッチしてるから安全」と過信して事故る。

2. リスク表

リスク 内容
平文資格情報 .env / auth.json が平文(第1回)。読まれれば全鍵が漏れる
--yolo 全承認をスキップ(第5回)。プロンプトインジェクションと組み合わさると最悪
署名なし自動更新 hermes update が署名検証なしだと、更新経路が攻撃面になる
公開バインド Gateway を 0.0.0.0 で晒す、API をループバック外に出す(第8回)

最も危険な組み合わせは --yolo × プロンプトインジェクションだ。承認ゲートを全部外した状態で、悪意ある入力に「rm -rf ~ を実行せよ」と書かれていたら、止めるものが無い。--yolo は「事故防止すら切る」スイッチだと理解すべきだ。

3. 安全運用チェックリスト(8 項目)

実運用で最低限守るべき 8 項目。

  1. chmod 600.env / auth.json の権限を所有者のみに絞る
  2. yolo 無効--yolo を常用しない。承認は面倒でも残す
  3. gateway ループバック — OpenAI 互換 API は 127.0.0.1 のまま。外に出すなら認証必須
  4. スキル / プラグインのレビュー — 第9回の 4 ソース、特に user / project / pip を入れる前に中身を読む
  5. terminal バックエンド隔離 — シェル実行はコンテナや専用ユーザーに隔離。HERMES_HOME プロファイル分離(第9回)も活用
  6. 更新レビューhermes update の差分を確認してから適用。rolling main は 1 日で大きく動く
  7. allowlist — ツールやコマンドは許可リスト方式で絞る
  8. ログ監視~/.hermes/logs を監視し、想定外のツール実行を検知

このリストは「Hermes が信用できない」から作るのではない。エージェントに terminalcomputer_use を握らせる以上、人間側が境界を引く責任がある、という話だ。第1節の「ヒューリスティクスは境界ではない」がここに効いてくる。

4. コード品質の総括 — 連載を閉じる

10 回を通じて Hermes のコードを読んできた。最後に総括する。

巨大モノリス vs モジュール化の同居gateway/run.py は 19,741 行、cli.py は 15,994 行、conversation_loop.py は 4,836 行——主要ファイルは軒並み巨大だ。一方で tools/ は 1 ツール 1 ファイルに近く、plugins/ の kind 別ロードや MemoryProvider ABC のように、拡張点はきれいに抽象化されている。**「コアは太く、辺縁は疎結合」**という構造で、読みやすさと一枚岩の重さが同居している。

承認のヒューリスティック依存。第5回・本回で見たとおり、安全機構の多くがパターンマッチに頼る。これは「事故防止」としては妥当だが、「境界」と取り違えてはいけない——設計者自身がそう明言している点は誠実だ。

新旧 CLI の併存cli.py(15,994 行)と hermes_cli/main.py(15,674 行)が併存している。移行途上の名残で、rolling main を読むときの混乱の一因でもある(第1回のバージョン三層問題と同根の「動き続けるコードベース」の宿命だ)。


連載を終えて — 人格 = 知能 × 記憶

第4回で掲げたテーゼに戻る。人格 = 知能 × 記憶

Hermes のコードを 10 回かけて読んで確信したのは、エージェントの「らしさ」はモデル(知能)だけでは決まらない、ということだ。会話を畳む圧縮、それを引き戻す記憶の再注入、SOUL.md の種、プロファイルによる文脈の分離——これらが組み合わさって初めて、揮発する context の上に連続した人格が立ち上がる。

そして最終回の主題だったセキュリティは、その人格に境界を与える営みだ。何でもできるエージェントは、何をすべきでないかを人間が決めなければ危うい。知能と記憶が人格を作り、境界がそれを安全に世界へ接続する。

自分のエージェントの中身を読むとは、結局、自分が何を任せ、何を任せないかを決めることだった。この連載が、読者自身の「箱の中」を覗く一助になれば幸いだ。


連載第1回はこちら

対応マップ章: §7, §8 / 行番号は hermes update でずれうる


クイックイタレート株式会社
IoT / 電力監視 / AI / 衛星・無線通信 / システムインテグレーション/
ローカル LLM・エージェント基盤に関するお問い合わせはお気軽にどうぞ。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?