AgentUAC:AIエージェント向け実行時UACガード
概要
AgentUACは、ローカルで動作するAIエージェントが実行しようとする高リスクな操作(機密ファイルの読み取り、ファイル削除、外部プロセスの実行、ネットワーク送信など)をランタイムでフックして一時停止し、ユーザーの明示的な承認を得てから続行するためのツールです。Node.jsの—requireフラグを使ってプロセス起動時に自動的に注入され、fsやchild_process、ネットワーク系の操作をModule require hookで横取りします。待機はSharedArrayBufferとAtomics.waitを用いた本当の同期ブロックで実現し、承認UIやロジックはワーカースレッドで分離してメインアプリを汚さない設計になっています。
リポジトリの統計情報
- スター数: 9
- フォーク数: 0
- ウォッチャー数: 9
- コミット数: 3
- ファイル数: 11
- メインの言語: TypeScript
主な特徴
- ゼロ侵入: Node.js の —require で起動時に自動マウントし既存コードを変更せず導入可能
- 真の同期ブロック: SharedArrayBuffer と Atomics.wait によるスレッドブロッキングで確実に待機
- クロスフレームワーク互換: Module require hook によるインターセプトで特定フレームワーク依存なし
- 承認ロジックの分離: ワーカースレッドでUI/承認処理を実行しメイン処理の影響を最小化
技術的なポイント
AgentUACは「ランタイム横断的フック」と「同期的なユーザー承認」を両立する点が最大の技術的特徴です。具体的にはNode.jsの起動時に—requireでエージェントを注入し、requireフックでfsやchild_processなどの危険APIのラッパーを差し込みます。危険操作が検出されると、SharedArrayBufferを共有してAtomics.waitで呼び出し元スレッドをブロックし、並列のワーカースレッド(Worker)側で承認ダイアログやポリシーチェックを行います。ワーカーは承認/拒否の結果をSharedArrayBuffer経由で返し、Atomics.notifyによりブロック解除されます。この設計により、非同期コールバック流れの中でも「実行を停止してユーザー確認を待つ」ことが可能になります。モジュールフックを用いるため、特定のAIフレームワークに依存せずOpenClawやAutoGPT、LangChainなど多様なエージェントに適用可能です。実装はTypeScriptで整理され、承認UIやポリシーの拡張点(design.mdなど)を用意している一方、SharedArrayBufferの利用やワーカースレッド間通信にはNode.jsのバージョンやランタイム設定(例えばSharedArrayBufferの有効化)に注意が必要です。さらに、ゼロ侵入性を保つ代わりに、ランタイムにフックが入ることによる互換性確認や性能影響の評価が推奨されます。
プロジェクトの構成
主要なファイルとディレクトリ:
- .gitignore: file
- LICENSE: file
- README.md: file
- bin: dir
- design.md: file
…他 6 ファイル
まとめ
ランタイムでAIの危険操作を同期的に止める軽量なガード層。導入が容易で実用的。
リポジトリ情報:
- 名前: AgentUAC
- 説明: A simple tool to private agent from dangerous operations
- スター数: 9
- 言語: TypeScript
- URL: https://github.com/yucai233/AgentUAC
- オーナー: yucai233
- アバター: https://avatars.githubusercontent.com/u/92958993?v=4
READMEの抜粋:
AgentUAC
A simple tool to private agent from dangerous operations
AgentUAC (User Account Control for AI)
为本地 AI 智能体提供运行时安全拦截与审批层。
概述
AgentUAC 是一个用于拦截 AI 智能体(如 OpenClaw, AutoGPT, LangChain 应用)高危操作的运行时安全工具。当 AI 尝试执行危险操作(如读取敏感文件、执行删除命令)时,系统会暂停执行并等待用户审批。
核心特性
- 零侵入: 通过 Node.js
--require机制自动挂载 - 同步阻塞: 使用
SharedArrayBuffer+Atomics.wait实现真正的线程阻塞 - 跨框架兼容: 通过 Module require hook 拦截,不依赖特定框架
- Worker 线程分离: 审批逻辑在独立线程中运行,不阻塞主应用
危险操作拦截
文件系统 (fs)
- 读取敏感文件:
/et...