Organisation: Example Corp(サンプル株式会社)
Prepared for: [TO FILL: IT / Information Security Department]
Security contact: security@example.com
Generated: 2026-06-14T03:52:27.279551+00:00 (Aigis v1.1.11)
Claude Code is Anthropic's command-line coding agent. It reads and edits
files, runs shell commands, fetches web content, and can call external
tools (including Model Context Protocol servers) on a developer's machine
to complete software-engineering tasks autonomously. Because it executes
real actions on a real workstation, an uncontrolled deployment is a
meaningful operational and security risk.
Aigis is a zero-dependency, open-source guardrail layer that sits between
the agent and the actions it wants to take. It provides three things an
IT/security department can rely on:
1. Deterministic pre-execution guardrails. A Claude Code *PreToolUse*
hook intercepts every tool call. Aigis scans the request, evaluates it
against your organisation's policy, and returns allow / review / deny
before the action runs. Decisions are rule-based and reproducible —
not a probabilistic model judging itself.
2. Tamper-evident audit logs. Every decision is recorded to an
append-only JSONL log. A signed variant (HMAC-SHA256 + hash chain)
makes after-the-fact deletion or modification detectable.
3. An organisation-owned policy. The policy is a human-readable file in
your repository, reviewed and version-controlled like any other code.
Aigis runs entirely locally and adds no new runtime dependencies. It does
not send your prompts or code anywhere; it governs what the agent is
allowed to do on your machine.
NIST AI RMF, OWASP LLM Top 10, and the METI/MIC AI Business Operator
Guidelines v1.2, plus an explicit "what Aigis does NOT cover" boundary.
language and as literal YAML.
tamper-evidence design, and the command to verify integrity.
triage, escalate, and report false positives.
rules — 10 deny, 5 review, 1 allow.
Default decision when no rule matches: allow.
This table maps each control Aigis implements to the major security and AI-governance frameworks. ISO/IEC 27001 item numbers are listed as "supports evidence for" — Aigis is a control implementation, not a certification body, and does not guarantee compliance.
| Aigis control | What it does | ISO/IEC 27001:2022 Annex A | NIST AI RMF | OWASP LLM Top 10 | AI Business Operator GL v1.2 |
|---|---|---|---|---|---|
| Input scanning (prompt-injection / jailbreak / PII) | Deterministic regex + similarity detection on every prompt before it reaches the model. | A.8.16 (Monitoring activities), A.5.7 (Threat intelligence) | MEASURE 2.7, MANAGE 2.1 | LLM01 Prompt Injection, LLM02 Sensitive Information Disclosure | GL-POISON-01, SEC-PI-01 |
| Output scanning (data leak / secret / PII) | Scans model output for leaked secrets, PII, and system-prompt disclosure before it is returned. | A.8.12 (Data leakage prevention), A.5.34 (Privacy and PII) | MEASURE 2.7, MANAGE 4.1 | LLM02 Sensitive Information Disclosure, LLM06 Excessive Agency | APPI-PII-01, GL-DATA-01 |
| Tool-call policy enforcement | Deterministic allow/deny/review decision on every tool call (shell, file, network) before execution. | A.8.2 (Privileged access rights), A.8.18 (Use of privileged utility programs) | GOVERN 1.1, MANAGE 2.1 | LLM06 Excessive Agency, LLM08 Vector and Embedding Weaknesses | GL-HUMAN-03 (最小権限), SEC-PRIV-01 |
| MCP tool-definition scanning | Detects tool-poisoning and rug-pull changes in Model Context Protocol server definitions. | A.5.21 (ICT supply chain security), A.8.30 (Outsourced development) | MAP 4.1, MANAGE 3.1 | LLM03 Supply Chain, LLM01 Prompt Injection | GL-SEC-03 (攻撃対象面の管理) |
| Memory / file-write filter | Blocks writes to protected paths (.env, credentials, SSH keys) and filters persisted agent memory. | A.8.3 (Information access restriction), A.8.12 (Data leakage prevention) | MANAGE 2.1, GOVERN 1.4 | LLM06 Excessive Agency, LLM02 Sensitive Information Disclosure | GL-HUMAN-03 (最小権限), GL-DATA-02 |
| Tamper-evident audit log (HMAC + hash chain) | Append-only log; each entry HMAC-SHA256 signed and hash-chained so deletion/modification is detectable. | A.8.15 (Logging), A.8.16 (Monitoring activities), A.5.28 (Collection of evidence) | MEASURE 2.8, MANAGE 4.1 | LLM09 Misinformation (audit trail), LLM06 Excessive Agency | GL-AUDIT-01 (追跡可能性), GL-RISK-02 (インシデントDB) |
| SIEM forwarding (ECS / HTTP) | Optional non-blocking forwarder mirrors events to a SIEM in Elastic Common Schema; PII redaction runs first. | A.8.16 (Monitoring activities), A.5.25 (Assessment of security events) | MEASURE 2.8, MANAGE 4.1 | LLM06 Excessive Agency | GL-HUMAN-04 (継続的モニタリング) |
| Weekly security report | Automated weekly report of scans, blocks, OWASP coverage, and week-over-week trend for review meetings. | A.5.36 (Compliance review), A.8.16 (Monitoring activities) | MEASURE 4.1, GOVERN 4.1 | LLM09 Misinformation (reporting) | GL-TRANS-01 (ドキュメント化), GL-RISK-02 |
For an honest scope boundary, the following areas are out of scope for Aigis and must be handled by other controls (your existing security tooling and operational processes).
Policy currently in force: Aigis Enterprise Policy (v1.0). Default decision when no rule matches: allow.
| # | Rule ID | Action | Target | Decision | Reason | |
|---|---|---|---|---|---|---|
| 1 | dangerous_commands |
shell:exec |
rm -rf * |
deny | Recursive forced deletion is blocked | |
| 2 | dangerous_format |
shell:exec |
*mkfs* |
deny | Filesystem format commands are blocked | |
| 3 | dangerous_dd |
shell:exec |
*dd if=* |
deny | Raw disk operations are blocked | |
| 4 | sudo_commands |
shell:exec |
sudo * |
review | Privilege escalation requires review | |
| 5 | env_file_protection |
file:write |
.env* |
deny | Environment files are protected from modification | |
| 6 | secrets_dir_protection |
file:* |
*secrets* |
review | Access to secrets directories requires review | |
| 7 | ssh_key_protection |
file:* |
*.ssh/* |
deny | SSH key access is blocked | |
| 8 | credentials_protection |
file:write |
*credentials* |
deny | Credential files are protected | |
| 9 | pipe_to_shell |
shell:exec |
`* | bash*` | deny | Piping remote content to shell is blocked |
| 10 | pipe_to_sh |
shell:exec |
`* | sh*` | deny | Piping remote content to shell is blocked |
| 11 | git_force_push |
shell:exec |
*--force* |
deny | Force push is blocked | |
| 12 | git_push_review |
shell:exec |
git push* |
review | Git push requires review | |
| 13 | agent_spawn_review |
agent:spawn |
* |
review | Spawning sub-agents requires review | |
| 14 | llm_prompt_scan |
llm:prompt |
* |
allow | LLM prompts are scanned by Aigis's detection engine | |
| 15 | risk_threshold_critical |
* |
* |
deny | Critical-risk content detected by Aigis scan engine | |
| 16 | risk_threshold_medium |
* |
* |
review | Suspicious content detected by Aigis scan engine |
The following is the verbatim policy file under version control.
# Aigis Policy: Aigis Enterprise Policy
# Generated by Aigis v0.3.0
name: "Aigis Enterprise Policy"
version: "1.0"
default_decision: allow
rules:
- id: dangerous_commands
action: "shell:exec"
target: "rm -rf *"
decision: deny
reason: "Recursive forced deletion is blocked"
- id: dangerous_format
action: "shell:exec"
target: "*mkfs*"
decision: deny
reason: "Filesystem format commands are blocked"
- id: dangerous_dd
action: "shell:exec"
target: "*dd if=*"
decision: deny
reason: "Raw disk operations are blocked"
- id: sudo_commands
action: "shell:exec"
target: "sudo *"
decision: review
reason: "Privilege escalation requires review"
- id: env_file_protection
action: "file:write"
target: ".env*"
decision: deny
reason: "Environment files are protected from modification"
- id: secrets_dir_protection
action: "file:*"
target: "*secrets*"
decision: review
reason: "Access to secrets directories requires review"
- id: ssh_key_protection
action: "file:*"
target: "*.ssh/*"
decision: deny
reason: "SSH key access is blocked"
- id: credentials_protection
action: "file:write"
target: "*credentials*"
decision: deny
reason: "Credential files are protected"
- id: pipe_to_shell
action: "shell:exec"
target: "*| bash*"
decision: deny
reason: "Piping remote content to shell is blocked"
- id: pipe_to_sh
action: "shell:exec"
target: "*| sh*"
decision: deny
reason: "Piping remote content to shell is blocked"
- id: git_force_push
action: "shell:exec"
target: "*--force*"
decision: deny
reason: "Force push is blocked"
- id: git_push_review
action: "shell:exec"
target: "git push*"
decision: review
reason: "Git push requires review"
- id: agent_spawn_review
action: "agent:spawn"
target: "*"
decision: review
reason: "Spawning sub-agents requires review"
- id: llm_prompt_scan
action: "llm:prompt"
target: "*"
decision: allow
reason: "LLM prompts are scanned by Aigis's detection engine"
- id: risk_threshold_critical
action: "*"
target: "*"
decision: deny
reason: "Critical-risk content detected by Aigis scan engine"
conditions:
risk_above: 80
- id: risk_threshold_medium
action: "*"
target: "*"
decision: review
reason: "Suspicious content detected by Aigis scan engine"
conditions:
risk_above: 40
Aigis keeps audit logs in three tiers (all append-only JSONL, one event per line):
.aigis/logs (per-project, developer-visible)~/.aigis/global/ (cross-project, for audit / CISO)~/.aigis/alerts/ (deny / review events, permanent)Current state: local logs are not yet created,
with 0 events in the last 7 days and 0 in 30 days.
Each event is recorded as an aigis.activity.ActivityEvent with these fields:
actiontargetagent_typeuser_idsession_idevent_typecwdproject_namedetailsrisk_scorerisk_levelmatched_rulesremediation_hintsowasp_refspolicy_decisionpolicy_rule_idtimestampevent_idautonomy_leveldelegation_chainestimated_costmemory_scopesuggested_fixfix_applied(compressed or deleted).
~/.aigis/alerts/) are kept permanently and never deleted.aigis maintenanceThe signed audit log (aigis.audit.SignedAuditLog) does two things per entry:
1. HMAC-SHA256 signature — every field of the entry is canonicalised to
JSON and signed with a secret key. The signature depends on the entry's
content, so changing a single byte fails signature verification.
2. Hash chain — each entry stores the SHA-256 hash of the previous entry
(prev_hash), so deleting, reordering, or inserting entries is detectable.
Integrity is checked with four tests: signature, chain, sequence, and
timestamp ordering.
Verify command:
aigis audit verify
Use --log PATH to point at a specific log file and --json for a
machine-readable result. Use aigis audit status for a quick health check.
Current state: signed audit log is
available but not yet enabled.
Events can optionally be forwarded to an external SIEM (Elastic Common Schema,
over HTTP). Forwarding is non-blocking and never delays an agent tool call. A
PII redactor can run before any event leaves the process. See
docs/forwarders.md. Current state: not detected (forwarders are configured in code; see docs/forwarders.md).
A Claude Code *PreToolUse* hook runs on every tool call. When Aigis denies
a request, the hook exits with code 2 and Claude Code aborts that tool
execution. The reason (the matched policy rule ID, and the risk score where
relevant) is printed to standard error and simultaneously written to the
audit log.
The hook is fail-closed: if it cannot reach a decision — unparseable
input, Aigis not installed, an exception during scanning — it blocks on the
safe side.
| Severity | Guideline | Response |
|---|---|---|
| Critical | Risk score ≥ 80, or a denied destructive op (rm -rf, etc.) |
Immediate block. Review the record; escalate if needed |
| High | Risk score 50–79 | Block or review. A responder examines it |
| Medium | Risk score 40–49, review decision | Human approval via the review queue |
| Low | Risk score < 40 | Allowed; logged only |
1. List recent alerts: aigis logs --alerts
2. Inspect the event details (action, target, matched rule, risk score).
3. Verify audit-log integrity: aigis audit verify
4. If a legitimate action was blocked, follow "Reporting false positives" below.
5. If this looks like an attack, report it using the escalation template.
Subject: [Aigis] {severity} — detected {rule_id}
When: {ISO-8601 timestamp}
Project / host: {project name / hostname}
User: {user_id}
Action: {action} Target: {target}
Risk score: {score} Decision: {decision}
Matched rule: {rule_id}
Audit-log verification: {result of `aigis audit verify`}
First responder: [TO FILL: first responder name]
Escalate to: security@example.com
1. Capture the exact blocked input/action (aigis logs --alerts --json).
2. Reproduce by re-scanning the input: aigis scan "<input>"
3. If it is genuinely legitimate, adjust the policy (see below).
4. Record the adjustment in the commit message for the review trail.
aigis policy showaigis-policy.yaml to add or adjust rules.aigis policy check[TO FILL: approver / role].
We recommend introducing Aigis in three phases to limit risk while validating
it in real use. Each phase ends with a review gate that decides whether to
proceed to the next.
Scope: [TO FILL: pilot team / project]
aigis init --agent claude-codeaigis doctoraigis logs --alerts and the weekly reportReview gate 1: Is the false-positive rate acceptable? Were there any
serious block events? Approver: [TO FILL: phase-1 approver]
docs/forwarders.md)Review gate 2: Is audit-log integrity verifiable (aigis audit verify)?
Is the operational load reasonable? Approver:
[TO FILL: phase-2 approver]
Review gate 3: Is the governance process sustainable?
Approver: [TO FILL: phase-3 approver]
_Regenerate this pack whenever the policy changes (it can run in CI), so the
documents you submit to IT always reflect the live posture._
組織: Example Corp(サンプル株式会社)
提出先: 【要記入: 情報システム部門】
セキュリティ窓口: security@example.com
生成日時: 2026-06-14T03:52:27.279551+00:00(Aigis v1.1.11)
Claude CodeはAnthropic社が提供するコマンドライン型のコーディングエージェントです。
ファイルの読み書き、シェルコマンドの実行、Webコンテンツの取得を行い、外部ツール
(Model Context Protocolサーバーを含む)を呼び出して、ソフトウェア開発タスクを
自律的に遂行します。開発者の実機上で実際の操作を実行するため、統制のない導入は
運用・セキュリティ上の重大なリスクとなり得ます。
Aigisは、エージェントと、それが実行しようとする操作との間に位置する、ゼロ依存の
オープンソース・ガードレール層です。情報システム部門が拠り所とできる、次の3点を
提供します。
1. 決定論的な実行前ガードレール。 Claude Codeの *PreToolUse* フックが、すべての
ツール呼び出しを捕捉します。Aigisはリクエストを検査し、貴社のポリシーに照らして
評価し、操作が実行される前に「許可/レビュー/拒否」を返します。判定はルール
ベースで再現可能であり、モデルが自分自身を確率的に判定するものではありません。
2. 改ざん検知が可能な監査ログ。 すべての判定は追記専用のJSONLログに記録されます。
署名付き版(HMAC-SHA256+ハッシュチェーン)により、事後の削除・改ざんを検知できます。
3. 組織が保有するポリシー。 ポリシーはリポジトリ内の可読なファイルであり、他の
コードと同様にレビューおよびバージョン管理が可能です。
Aigisは完全にローカルで動作し、新たな実行時依存関係を追加しません。プロンプトや
コードを外部に送信することはなく、エージェントが貴社の端末上で行える操作を統制します。
NIST AI RMF、OWASP LLM Top 10、および経済産業省・総務省「AI事業者ガイドライン
v1.2」へマッピングしたもの。あわせて「Aigisが対象としない範囲」を明示します。
検証コマンドを記載します。
レーション、誤検知の報告方法を記載します。
— 拒否10件、レビュー5件、許可1件。
どのルールにも一致しない場合の既定判定: allow。
本表は、Aigisが実装する各コントロールを、主要なセキュリティ・AIガバナンスフレームワークへ対応付けたものです。ISO/IEC 27001の項番は「証跡を補強するもの(supports evidence for)」として記載しており、Aigisが認証や準拠を保証するものではありません。
| Aigisコントロール | 概要 | ISO/IEC 27001:2022 附属書A | NIST AI RMF | OWASP LLM Top 10 | AI事業者GL v1.2 |
|---|---|---|---|---|---|
| 入力スキャン(プロンプトインジェクション・ジェイルブレイク・個人情報) | モデルに到達する前に、すべてのプロンプトを正規表現と類似度検知で決定論的に検査します。 | A.8.16 (Monitoring activities), A.5.7 (Threat intelligence) | MEASURE 2.7, MANAGE 2.1 | LLM01 Prompt Injection, LLM02 Sensitive Information Disclosure | GL-POISON-01, SEC-PI-01 |
| 出力スキャン(情報漏洩・秘密情報・個人情報) | モデルの出力を返す前に、秘密情報・個人情報・システムプロンプトの漏洩がないか検査します。 | A.8.12 (Data leakage prevention), A.5.34 (Privacy and PII) | MEASURE 2.7, MANAGE 4.1 | LLM02 Sensitive Information Disclosure, LLM06 Excessive Agency | APPI-PII-01, GL-DATA-01 |
| ツール呼び出しポリシー強制 | すべてのツール呼び出し(シェル・ファイル・ネットワーク)を実行前に許可/拒否/レビュー判定します。 | A.8.2 (Privileged access rights), A.8.18 (Use of privileged utility programs) | GOVERN 1.1, MANAGE 2.1 | LLM06 Excessive Agency, LLM08 Vector and Embedding Weaknesses | GL-HUMAN-03 (最小権限), SEC-PRIV-01 |
| MCPツール定義スキャン | Model Context Protocolサーバー定義に含まれるツールポイズニングや定義改ざん(ラグプル)を検出します。 | A.5.21 (ICT supply chain security), A.8.30 (Outsourced development) | MAP 4.1, MANAGE 3.1 | LLM03 Supply Chain, LLM01 Prompt Injection | GL-SEC-03 (攻撃対象面の管理) |
| メモリ・ファイル書き込みフィルター | 保護対象パス(.env、認証情報、SSH鍵)への書き込みをブロックし、永続化されるエージェントメモリを検査します。 | A.8.3 (Information access restriction), A.8.12 (Data leakage prevention) | MANAGE 2.1, GOVERN 1.4 | LLM06 Excessive Agency, LLM02 Sensitive Information Disclosure | GL-HUMAN-03 (最小権限), GL-DATA-02 |
| 改ざん検知監査ログ(HMAC+ハッシュチェーン) | 追記専用ログ。各エントリをHMAC-SHA256で署名しハッシュチェーンで連結するため、削除・改ざんを検知できます。 | A.8.15 (Logging), A.8.16 (Monitoring activities), A.5.28 (Collection of evidence) | MEASURE 2.8, MANAGE 4.1 | LLM09 Misinformation (audit trail), LLM06 Excessive Agency | GL-AUDIT-01 (追跡可能性), GL-RISK-02 (インシデントDB) |
| SIEM転送(ECS/HTTP) | 任意の非ブロッキング転送機能が、イベントをElastic Common Schema形式でSIEMへ複製します。送信前に個人情報の墨消しを実施します。 | A.8.16 (Monitoring activities), A.5.25 (Assessment of security events) | MEASURE 2.8, MANAGE 4.1 | LLM06 Excessive Agency | GL-HUMAN-04 (継続的モニタリング) |
| 週次セキュリティレポート | スキャン数・ブロック数・OWASPカバレッジ・前週比トレンドを集計した週次レポートを自動生成します。 | A.5.36 (Compliance review), A.8.16 (Monitoring activities) | MEASURE 4.1, GOVERN 4.1 | LLM09 Misinformation (reporting) | GL-TRANS-01 (ドキュメント化), GL-RISK-02 |
正直な範囲設定のため、Aigisが対象としない領域を明示します。これらは別の管理策(既存のセキュリティ製品・運用体制)で対応する必要があります。
現在適用中のポリシー: Aigis Enterprise Policy(v1.0)。どのルールにも一致しない場合の既定判定は allow です。
| # | ルールID | アクション | 対象 | 判定 | 理由 | |
|---|---|---|---|---|---|---|
| 1 | dangerous_commands |
shell:exec |
rm -rf * |
deny | Recursive forced deletion is blocked | |
| 2 | dangerous_format |
shell:exec |
*mkfs* |
deny | Filesystem format commands are blocked | |
| 3 | dangerous_dd |
shell:exec |
*dd if=* |
deny | Raw disk operations are blocked | |
| 4 | sudo_commands |
shell:exec |
sudo * |
review | Privilege escalation requires review | |
| 5 | env_file_protection |
file:write |
.env* |
deny | Environment files are protected from modification | |
| 6 | secrets_dir_protection |
file:* |
*secrets* |
review | Access to secrets directories requires review | |
| 7 | ssh_key_protection |
file:* |
*.ssh/* |
deny | SSH key access is blocked | |
| 8 | credentials_protection |
file:write |
*credentials* |
deny | Credential files are protected | |
| 9 | pipe_to_shell |
shell:exec |
`* | bash*` | deny | Piping remote content to shell is blocked |
| 10 | pipe_to_sh |
shell:exec |
`* | sh*` | deny | Piping remote content to shell is blocked |
| 11 | git_force_push |
shell:exec |
*--force* |
deny | Force push is blocked | |
| 12 | git_push_review |
shell:exec |
git push* |
review | Git push requires review | |
| 13 | agent_spawn_review |
agent:spawn |
* |
review | Spawning sub-agents requires review | |
| 14 | llm_prompt_scan |
llm:prompt |
* |
allow | LLM prompts are scanned by Aigis's detection engine | |
| 15 | risk_threshold_critical |
* |
* |
deny | Critical-risk content detected by Aigis scan engine | |
| 16 | risk_threshold_medium |
* |
* |
review | Suspicious content detected by Aigis scan engine |
以下は、リポジトリで管理されている実際のポリシーファイルの全文です。
# Aigis Policy: Aigis Enterprise Policy
# Generated by Aigis v0.3.0
name: "Aigis Enterprise Policy"
version: "1.0"
default_decision: allow
rules:
- id: dangerous_commands
action: "shell:exec"
target: "rm -rf *"
decision: deny
reason: "Recursive forced deletion is blocked"
- id: dangerous_format
action: "shell:exec"
target: "*mkfs*"
decision: deny
reason: "Filesystem format commands are blocked"
- id: dangerous_dd
action: "shell:exec"
target: "*dd if=*"
decision: deny
reason: "Raw disk operations are blocked"
- id: sudo_commands
action: "shell:exec"
target: "sudo *"
decision: review
reason: "Privilege escalation requires review"
- id: env_file_protection
action: "file:write"
target: ".env*"
decision: deny
reason: "Environment files are protected from modification"
- id: secrets_dir_protection
action: "file:*"
target: "*secrets*"
decision: review
reason: "Access to secrets directories requires review"
- id: ssh_key_protection
action: "file:*"
target: "*.ssh/*"
decision: deny
reason: "SSH key access is blocked"
- id: credentials_protection
action: "file:write"
target: "*credentials*"
decision: deny
reason: "Credential files are protected"
- id: pipe_to_shell
action: "shell:exec"
target: "*| bash*"
decision: deny
reason: "Piping remote content to shell is blocked"
- id: pipe_to_sh
action: "shell:exec"
target: "*| sh*"
decision: deny
reason: "Piping remote content to shell is blocked"
- id: git_force_push
action: "shell:exec"
target: "*--force*"
decision: deny
reason: "Force push is blocked"
- id: git_push_review
action: "shell:exec"
target: "git push*"
decision: review
reason: "Git push requires review"
- id: agent_spawn_review
action: "agent:spawn"
target: "*"
decision: review
reason: "Spawning sub-agents requires review"
- id: llm_prompt_scan
action: "llm:prompt"
target: "*"
decision: allow
reason: "LLM prompts are scanned by Aigis's detection engine"
- id: risk_threshold_critical
action: "*"
target: "*"
decision: deny
reason: "Critical-risk content detected by Aigis scan engine"
conditions:
risk_above: 80
- id: risk_threshold_medium
action: "*"
target: "*"
decision: review
reason: "Suspicious content detected by Aigis scan engine"
conditions:
risk_above: 40
Aigisは監査ログを3階層で保持します(いずれも追記専用のJSONL形式、1行1イベント)。
.aigis/logs(プロジェクト単位、開発者が確認可能)~/.aigis/global/(全プロジェクト横断、監査・CISO向け)~/.aigis/alerts/(拒否・レビューイベントを恒久保存)現状: ローカルログは未生成、
直近7日間で0件、30日間で0件を記録しています。
各イベントは aigis.activity.ActivityEvent として記録され、以下のフィールドを持ちます。
actiontargetagent_typeuser_idsession_idevent_typecwdproject_namedetailsrisk_scorerisk_levelmatched_rulesremediation_hintsowasp_refspolicy_decisionpolicy_rule_idtimestampevent_idautonomy_leveldelegation_chainestimated_costmemory_scopesuggested_fixfix_applied~/.aigis/alerts/)は恒久保存され、削除されません。aigis maintenance署名付き監査ログ(aigis.audit.SignedAuditLog)は、各エントリに対して次を行います。
1. HMAC-SHA256署名 — 各エントリの全フィールドを正準JSON化し、秘密鍵で署名します。
署名はそのエントリの内容に依存するため、1バイトでも改変すれば署名検証に失敗します。
2. ハッシュチェーン — 各エントリは直前エントリのSHA-256ハッシュ(prev_hash)を保持
します。これにより、エントリの削除・並べ替え・挿入が検知可能になります。
整合性は次の4チェックで検証されます: 署名・チェーン・連番・タイムスタンプ順序。
検証コマンド:
aigis audit verify
--log PATH でログファイルを指定でき、--json で機械可読な結果を出力します。
状態確認には aigis audit status を使用します。
現状: 署名付き監査ログは利用可能(未有効化)です。
イベントは任意で外部SIEMへ転送できます(Elastic Common Schema形式、HTTP)。転送は
非ブロッキングで、エージェントのツール呼び出しを遅延させません。送信前に個人情報の
墨消し(Redactor)を実行できます。詳細は docs/forwarders.md を参照してください。
現状: not detected (forwarders are configured in code; see docs/forwarders.md)。
Claude Codeの *PreToolUse* フックがツール呼び出しごとに動作します。Aigisがリクエストを
拒否(deny)した場合、フックは終了コード 2 を返し、Claude Codeはそのツール実行を
中止します。理由(一致したポリシールールID、必要に応じてリスクスコア)が標準エラー出力に
表示され、同時に監査ログへ記録されます。
フックはフェイルクローズ(fail-closed)設計です。入力の解析失敗、Aigis未導入、スキャン
時の例外など、判定できない事象が発生した場合は、安全側に倒してブロックします。
| 重大度 | 目安 | 対応 |
|---|---|---|
| Critical | リスクスコア ≥ 80、または破壊的操作(rm -rf 等)の拒否 |
即時ブロック。記録を確認し、必要に応じてエスカレーション |
| High | リスクスコア 50–79 | ブロックまたはレビュー。担当者が確認 |
| Medium | リスクスコア 40–49、レビュー判定 | レビューキューで人間が承認 |
| Low | リスクスコア < 40 | 許可。ログのみ記録 |
1. 直近のアラートを確認します: aigis logs --alerts
2. 該当イベントの詳細(アクション・対象・一致ルール・リスクスコア)を確認します。
3. 監査ログの整合性を検証します: aigis audit verify
4. 正当な操作が誤ってブロックされた場合は、下記「誤検知の報告」に従います。
5. 攻撃の可能性がある場合は、下記エスカレーションテンプレートで報告します。
件名: [Aigis] {重大度} — {ルールID} を検知
発生日時: {ISO-8601タイムスタンプ}
プロジェクト / 端末: {プロジェクト名 / ホスト名}
利用者: {ユーザーID}
アクション: {action} 対象: {target}
リスクスコア: {score} 判定: {decision}
一致ルール: {rule_id}
監査ログ検証結果: {aigis audit verify の結果}
一次対応: 【要記入: 一次対応者名】
エスカレーション先: security@example.com
1. ブロックされた具体的な入力/操作を記録します(aigis logs --alerts --json)。
2. 当該入力を再スキャンして再現します: aigis scan "<入力>"
3. 正当な操作であると確認できた場合は、ポリシーを調整します(下記参照)。
4. 調整内容は、レビュー記録のためコミットメッセージに残します。
aigis policy showaigis-policy.yaml を編集してルールを追加・調整します。aigis policy checkAigisの導入は、リスクを抑えつつ実運用での妥当性を確認するため、3段階で進めることを
推奨します。各フェーズの終わりにレビューゲートを設け、次フェーズへの移行可否を判断します。
対象: 【要記入: パイロットチーム・プロジェクト】
aigis init --agent claude-code でフックを導入するaigis doctor で導入状態を確認するaigis logs --alerts と週次レポートで状況を確認するレビューゲート1: 誤検知率は許容範囲か。重大なブロック事象はなかったか。
承認者: 【要記入: フェーズ1承認者】
docs/forwarders.md)レビューゲート2: 監査ログの整合性は検証可能か(aigis audit verify)。
運用負荷は妥当か。承認者: 【要記入: フェーズ2承認者】
レビューゲート3: ガバナンス体制は継続的に運用可能か。
承認者: 【要記入: フェーズ3承認者】
_本パックはポリシー変更時に再生成することを推奨します(CIに組み込み可能)。
最新の稼働状況を反映した文書を、常に情報システム部門へ提出できます。_