forgeterm は何をしますか?
AIコーディングエージェントをリアルタイムで監視し、不正なファイルアクセス、ネットワーク接続、危険なコマンドをブロックするとともに、システムリソース制限を強制します。
概要
forgeterm は、AIエージェント(例:Claude Code、Cursor、Codex)が実行中のシステムに対して安全に動作するよう監視するツールです。ファイルシステム、ネットワーク、プロセス実行をフックし、ポリシーに基づいてアクションを許可または拒否します。
主な機能
- ファイルアクセス制御: 読み取り/書き込み/実行の許可リスト・拒否リスト
- ネットワーク監視: 許可されていないホストやポートへの接続をブロック
- コマンドフィルタリング: 危険なシェルコマンド(例:
rm -rf /)を検出し阻止 - リソース制限: CPU、メモリ、ディスク使用量の上限を設定
- リアルタイムログ: すべての監視イベントをログに記録
対応プラットフォーム
- Claude Code
- Cursor
- Codex
- その他のAIエージェント
インストール方法
pip install forgeterm
または、ソースからビルド:
git clone https://github.com/Lavenderustilagomaydis9432/forgeterm.git
cd forgeterm
pip install .
使用方法
基本コマンド
forgeterm --config config.yaml
設定例 (config.yaml)
filesystem:
allow_paths:
- /home/user/project
- /tmp
deny_paths:
- /etc
- /var/log
- /root
network:
allow_hosts:
- localhost
- 127.0.0.1
deny_hosts:
- 0.0.0.0
- 192.168.1.0/24
resources:
max_cpu_percent: 80
max_memory_mb: 2048
max_disk_gb: 10
commands:
deny_patterns:
- "rm -rf /"
- "dd if=/dev/zero of=/dev/sda"
- "chmod -R 777 /"
環境変数
| 変数名 | 説明 | デフォルト値 |
|---|---|---|
FORGETERM_CONFIG | 設定ファイルのパス | ./config.yaml |
FORGETERM_LOG_LEVEL | ログレベル | INFO |
FORGETERM_ALLOW_NETWORK | ネットワーク許可リスト(カンマ区切り) | なし |
FORGETERM_DENY_FILES | ファイル拒否パス(カンマ区切り) | なし |
ポリシーファイルの詳細
ポリシーファイルはYAML形式で記述します。各セクションでは、許可リスト(allow_*)と拒否リスト(deny_*)を設定できます。許可リストが設定されている場合、明示的に許可された項目のみが許可され、それ以外は拒否されます。拒否リストは許可リストよりも優先されます。
開発者向け情報
アーキテクチャ
forgeterm は以下のコンポーネントで構成されています:
- 監視デーモン: バックグラウンドで動作し、システムコールを傍受
- ポリシーエンジン: YAML設定に基づいてアクションを評価
- ロガー: イベントを構造化ログとして出力(JSON形式)
- CLIインターフェース: ユーザーが設定や監視を制御
拡張方法
独自のポリシーモジュールを追加するには、forgeterm.policies パッケージに新しいクラスを作成し、PolicyBase クラスを継承します。
from forgeterm.policies import PolicyBase
class CustomPolicy(PolicyBase):
def evaluate(self, event):
# イベントを評価し、許可する場合はTrue、拒否する場合はFalseを返す
return True
トラブルシューティング
よくある問題
- ポリシーが適用されない: 設定ファイルのパスが正しいか確認してください。
- リソース制限が効かない: OSのcgroupsなどを利用している場合、互換性に注意してください。
- ネットワークブロックが多すぎる: 許可リストの定義を確認し、必要に応じてホワイトリストを追加してください。
ライセンス
MIT License - 詳細はLICENSEファイルを参照してください。