create-hq 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/deps.d.ts +4 -0
- package/dist/deps.d.ts.map +1 -0
- package/dist/deps.js +65 -0
- package/dist/deps.js.map +1 -0
- package/dist/git.d.ts +3 -0
- package/dist/git.d.ts.map +1 -0
- package/dist/git.js +19 -0
- package/dist/git.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/scaffold.d.ts +8 -0
- package/dist/scaffold.d.ts.map +1 -0
- package/dist/scaffold.js +130 -0
- package/dist/scaffold.js.map +1 -0
- package/dist/ui.d.ts +7 -0
- package/dist/ui.d.ts.map +1 -0
- package/dist/ui.js +36 -0
- package/dist/ui.js.map +1 -0
- package/package.json +41 -0
- package/template/.claude/CLAUDE.md +202 -0
- package/template/.claude/commands/checkpoint.md +127 -0
- package/template/.claude/commands/cleanup.md +307 -0
- package/template/.claude/commands/execute-task.md +440 -0
- package/template/.claude/commands/exit-plan.md +41 -0
- package/template/.claude/commands/handoff.md +97 -0
- package/template/.claude/commands/learn.md +218 -0
- package/template/.claude/commands/metrics.md +118 -0
- package/template/.claude/commands/newworker.md +162 -0
- package/template/.claude/commands/nexttask.md +67 -0
- package/template/.claude/commands/prd.md +238 -0
- package/template/.claude/commands/reanchor.md +51 -0
- package/template/.claude/commands/remember.md +126 -0
- package/template/.claude/commands/run-project.md +348 -0
- package/template/.claude/commands/run.md +110 -0
- package/template/.claude/commands/search-reindex.md +62 -0
- package/template/.claude/commands/search.md +100 -0
- package/template/.claude/commands/setup.md +381 -0
- package/template/.claude/scripts/pure-ralph-loop.ps1 +312 -0
- package/template/.claude/scripts/pure-ralph-loop.sh +859 -0
- package/template/CHANGELOG.md +220 -0
- package/template/LICENSE +21 -0
- package/template/MIGRATION.md +259 -0
- package/template/README.md +368 -0
- package/template/data/journal/.gitkeep +0 -0
- package/template/docs/images/ascii-banner-options.md +122 -0
- package/template/docs/images/hq-banner.svg +105 -0
- package/template/knowledge/Ralph/01-overview.md +71 -0
- package/template/knowledge/Ralph/02-core-concepts.md +114 -0
- package/template/knowledge/Ralph/03-how-ralph-works.md +184 -0
- package/template/knowledge/Ralph/04-back-pressure.md +222 -0
- package/template/knowledge/Ralph/05-specifications.md +210 -0
- package/template/knowledge/Ralph/06-agents-md.md +222 -0
- package/template/knowledge/Ralph/07-implementation.md +316 -0
- package/template/knowledge/Ralph/08-economics.md +182 -0
- package/template/knowledge/Ralph/09-resources.md +145 -0
- package/template/knowledge/Ralph/10-claude-code-workflow.md +212 -0
- package/template/knowledge/Ralph/11-team-training-guide.md +383 -0
- package/template/knowledge/Ralph/README.md +40 -0
- package/template/knowledge/ai-security-framework/CONTRIBUTING.md +139 -0
- package/template/knowledge/ai-security-framework/GLOSSARY.md +176 -0
- package/template/knowledge/ai-security-framework/LICENSE +21 -0
- package/template/knowledge/ai-security-framework/QUICK-START.md +172 -0
- package/template/knowledge/ai-security-framework/README.md +232 -0
- package/template/knowledge/ai-security-framework/checklists/browser-security.md +301 -0
- package/template/knowledge/ai-security-framework/checklists/credential-isolation.md +322 -0
- package/template/knowledge/ai-security-framework/checklists/incident-response.md +288 -0
- package/template/knowledge/ai-security-framework/checklists/pre-flight.md +249 -0
- package/template/knowledge/ai-security-framework/checklists/weekly-audit.md +159 -0
- package/template/knowledge/ai-security-framework/configs/audit-logging.md +372 -0
- package/template/knowledge/ai-security-framework/configs/kill-switches.md +354 -0
- package/template/knowledge/ai-security-framework/docs/01-core-principles.md +256 -0
- package/template/knowledge/ai-security-framework/docs/02-threat-landscape.md +326 -0
- package/template/knowledge/ai-security-framework/docs/03-security-posture.md +250 -0
- package/template/knowledge/ai-security-framework/templates/agents-security.md +233 -0
- package/template/knowledge/design-styles/README.md +42 -0
- package/template/knowledge/design-styles/american-industrial.md +136 -0
- package/template/knowledge/design-styles/ethereal-abstract.md +133 -0
- package/template/knowledge/design-styles/liminal-portal.md +111 -0
- package/template/knowledge/design-styles/swipes/american-industrial/G-3m4YPW0AADdu2.jpeg +0 -0
- package/template/knowledge/design-styles/swipes/american-industrial/G-JJlt5WwAABK3K.png +0 -0
- package/template/knowledge/design-styles/swipes/american-industrial/G-JJmj5W0AEbJ-7.png +0 -0
- package/template/knowledge/design-styles/swipes/american-industrial/G59fgNuXkAAKLJQ (1).jpeg +0 -0
- package/template/knowledge/design-styles/swipes/american-industrial/G59fgNuXkAAKLJQ.jpeg +0 -0
- package/template/knowledge/design-styles/swipes/american-industrial/G7fVkn3WEAAM-ST.jpeg +0 -0
- package/template/knowledge/design-styles/swipes/american-industrial/G8ECO5JWEAIksyn.png +0 -0
- package/template/knowledge/design-styles/swipes/american-industrial/G9-3GQSWoAA8eqZ.png +0 -0
- package/template/knowledge/design-styles/swipes/american-industrial/G9xEOqrXkAEZRcs.png +0 -0
- package/template/knowledge/design-styles/swipes/american-industrial/G_MVeJrXQAA8sx4.jpeg +0 -0
- package/template/knowledge/design-styles/swipes/american-industrial/G_RSkmGXkAAgAVZ.png +0 -0
- package/template/knowledge/design-styles/swipes/american-industrial/README.md +31 -0
- package/template/knowledge/design-styles/swipes/american-industrial/qyqtg7Dq.png +0 -0
- package/template/knowledge/dev-team/README.md +35 -0
- package/template/knowledge/dev-team/patterns/README.md +34 -0
- package/template/knowledge/dev-team/patterns/frontend/react-best-practices.md +178 -0
- package/template/knowledge/dev-team/troubleshooting/README.md +31 -0
- package/template/knowledge/dev-team/workflows/README.md +49 -0
- package/template/knowledge/hq/checkpoint-schema.json +51 -0
- package/template/knowledge/hq/index-md-spec.md +74 -0
- package/template/knowledge/hq/thread-schema.md +153 -0
- package/template/knowledge/hq-core/checkpoint-schema.json +51 -0
- package/template/knowledge/hq-core/index-md-spec.md +74 -0
- package/template/knowledge/hq-core/thread-schema.md +153 -0
- package/template/knowledge/loom/README.md +51 -0
- package/template/knowledge/loom/architecture.md +125 -0
- package/template/knowledge/loom/code-style.md +169 -0
- package/template/knowledge/loom/llm-proxy.md +132 -0
- package/template/knowledge/loom/state-machine.md +131 -0
- package/template/knowledge/loom/thread-system.md +117 -0
- package/template/knowledge/loom/tools.md +94 -0
- package/template/knowledge/loom/weaver.md +96 -0
- package/template/knowledge/loom/web-frontend.md +131 -0
- package/template/knowledge/projects/README.md +72 -0
- package/template/knowledge/projects/templates/README.template.md +28 -0
- package/template/knowledge/workers/README.md +195 -0
- package/template/knowledge/workers/ralph-loop-pattern.md +157 -0
- package/template/knowledge/workers/skill-schema.md +182 -0
- package/template/knowledge/workers/state-machine.md +102 -0
- package/template/knowledge/workers/templates/base-worker.yaml +73 -0
- package/template/knowledge/workers/templates/code-worker.yaml +85 -0
- package/template/knowledge/workers/templates/skill.yaml +49 -0
- package/template/knowledge/workers/templates/social-worker.yaml +70 -0
- package/template/modules/examples/full-manifest.yaml +92 -0
- package/template/modules/examples/minimal.yaml +14 -0
- package/template/modules/modules.yaml +59 -0
- package/template/projects/.gitkeep +0 -0
- package/template/projects/incorporate-workers-into-pure-ralph/prd.json +88 -0
- package/template/projects/pure-ralph-branch-isolation/README.md +114 -0
- package/template/projects/pure-ralph-branch-isolation/prd.json +123 -0
- package/template/projects/purist-ralph-loop/README.md +148 -0
- package/template/projects/purist-ralph-loop/prd.json +135 -0
- package/template/projects/ralph-test/prd.json +50 -0
- package/template/prompts/pure-ralph-base.md +551 -0
- package/template/settings/.gitkeep +0 -0
- package/template/settings/pure-ralph.json +42 -0
- package/template/social-content/drafts/INDEX.md +21 -0
- package/template/social-content/drafts/linkedin/.gitkeep +1 -0
- package/template/social-content/drafts/x/.gitkeep +1 -0
- package/template/social-content/images/.gitkeep +1 -0
- package/template/starter-projects/code-worker/README.md +97 -0
- package/template/starter-projects/code-worker/prd.json +45 -0
- package/template/starter-projects/personal-assistant/README.md +42 -0
- package/template/starter-projects/personal-assistant/prd.json +43 -0
- package/template/starter-projects/social-media/README.md +60 -0
- package/template/starter-projects/social-media/prd.json +43 -0
- package/template/workers/content-brand/README.md +59 -0
- package/template/workers/content-brand/skills/messaging-alignment.md +91 -0
- package/template/workers/content-brand/skills/tone-check.md +76 -0
- package/template/workers/content-brand/skills/voice-analysis.md +68 -0
- package/template/workers/content-brand/worker.yaml +81 -0
- package/template/workers/content-legal/README.md +80 -0
- package/template/workers/content-legal/skills/claim-substantiation.md +150 -0
- package/template/workers/content-legal/skills/compliance-scan.md +123 -0
- package/template/workers/content-legal/skills/disclaimer-check.md +146 -0
- package/template/workers/content-legal/worker.yaml +118 -0
- package/template/workers/content-product/README.md +77 -0
- package/template/workers/content-product/skills/claim-verification.md +96 -0
- package/template/workers/content-product/skills/feature-accuracy.md +117 -0
- package/template/workers/content-product/skills/stats-check.md +128 -0
- package/template/workers/content-product/worker.yaml +97 -0
- package/template/workers/content-sales/README.md +70 -0
- package/template/workers/content-sales/skills/conversion-analysis.md +96 -0
- package/template/workers/content-sales/skills/cta-audit.md +107 -0
- package/template/workers/content-sales/skills/value-prop-check.md +114 -0
- package/template/workers/content-sales/worker.yaml +93 -0
- package/template/workers/content-shared/cli.ts +242 -0
- package/template/workers/content-shared/index.ts +234 -0
- package/template/workers/content-shared/lib/accuracy-analyzer.ts +661 -0
- package/template/workers/content-shared/lib/analyze.ts +370 -0
- package/template/workers/content-shared/lib/brand-analyzer.ts +526 -0
- package/template/workers/content-shared/lib/cms-integration.ts +446 -0
- package/template/workers/content-shared/lib/compliance-analyzer.ts +655 -0
- package/template/workers/content-shared/lib/conversion-analyzer.ts +555 -0
- package/template/workers/content-shared/lib/github-integration.ts +582 -0
- package/template/workers/content-shared/lib/output.ts +373 -0
- package/template/workers/content-shared/lib/parser.ts +771 -0
- package/template/workers/content-shared/lib/priority.ts +439 -0
- package/template/workers/content-shared/lib/recommendations.ts +512 -0
- package/template/workers/content-shared/lib/reporter.ts +749 -0
- package/template/workers/content-shared/lib/restructure.ts +664 -0
- package/template/workers/content-shared/lib/scorer.ts +140 -0
- package/template/workers/content-shared/lib/types.ts +227 -0
- package/template/workers/content-shared/lib/variants.ts +595 -0
- package/template/workers/content-shared/package.json +51 -0
- package/template/workers/content-shared/pnpm-lock.yaml +39 -0
- package/template/workers/content-shared/test/sample-page.json +115 -0
- package/template/workers/content-shared/tsconfig.json +20 -0
- package/template/workers/dev-team/README.md +166 -0
- package/template/workers/dev-team/_template.yaml +70 -0
- package/template/workers/dev-team/architect/package.json +27 -0
- package/template/workers/dev-team/architect/skills/api-design.md +89 -0
- package/template/workers/dev-team/architect/skills/refactor-plan.md +96 -0
- package/template/workers/dev-team/architect/skills/system-design.md +100 -0
- package/template/workers/dev-team/architect/src/index.ts +49 -0
- package/template/workers/dev-team/architect/src/mcp-server.ts +122 -0
- package/template/workers/dev-team/architect/src/skills/api-design.ts +316 -0
- package/template/workers/dev-team/architect/src/skills/refactor-plan.ts +264 -0
- package/template/workers/dev-team/architect/src/skills/system-design.ts +212 -0
- package/template/workers/dev-team/architect/tsconfig.json +19 -0
- package/template/workers/dev-team/architect/worker.yaml +128 -0
- package/template/workers/dev-team/backend-dev/package-lock.json +1252 -0
- package/template/workers/dev-team/backend-dev/package.json +27 -0
- package/template/workers/dev-team/backend-dev/skills/implement-endpoint.md +70 -0
- package/template/workers/dev-team/backend-dev/skills/implement-service.md +62 -0
- package/template/workers/dev-team/backend-dev/src/index.ts +51 -0
- package/template/workers/dev-team/backend-dev/src/mcp-server.ts +109 -0
- package/template/workers/dev-team/backend-dev/src/skills/implement-endpoint.ts +122 -0
- package/template/workers/dev-team/backend-dev/src/skills/implement-service.ts +126 -0
- package/template/workers/dev-team/backend-dev/tsconfig.json +19 -0
- package/template/workers/dev-team/backend-dev/worker.yaml +128 -0
- package/template/workers/dev-team/code-reviewer/package-lock.json +1080 -0
- package/template/workers/dev-team/code-reviewer/package.json +24 -0
- package/template/workers/dev-team/code-reviewer/skills/merge-to-production.md +61 -0
- package/template/workers/dev-team/code-reviewer/skills/merge-to-staging.md +54 -0
- package/template/workers/dev-team/code-reviewer/skills/request-changes.md +63 -0
- package/template/workers/dev-team/code-reviewer/skills/review-pr.md +77 -0
- package/template/workers/dev-team/code-reviewer/src/index.ts +56 -0
- package/template/workers/dev-team/code-reviewer/src/mcp-server.ts +101 -0
- package/template/workers/dev-team/code-reviewer/tsconfig.json +19 -0
- package/template/workers/dev-team/code-reviewer/worker.yaml +90 -0
- package/template/workers/dev-team/database-dev/package.json +22 -0
- package/template/workers/dev-team/database-dev/skills/create-schema.md +48 -0
- package/template/workers/dev-team/database-dev/src/index.ts +50 -0
- package/template/workers/dev-team/database-dev/src/mcp-server.ts +76 -0
- package/template/workers/dev-team/database-dev/tsconfig.json +18 -0
- package/template/workers/dev-team/database-dev/worker.yaml +90 -0
- package/template/workers/dev-team/frontend-dev/package.json +22 -0
- package/template/workers/dev-team/frontend-dev/skills/create-component.md +26 -0
- package/template/workers/dev-team/frontend-dev/src/index.ts +50 -0
- package/template/workers/dev-team/frontend-dev/src/mcp-server.ts +77 -0
- package/template/workers/dev-team/frontend-dev/tsconfig.json +18 -0
- package/template/workers/dev-team/frontend-dev/worker.yaml +132 -0
- package/template/workers/dev-team/infra-dev/package.json +24 -0
- package/template/workers/dev-team/infra-dev/skills/add-monitoring.md +73 -0
- package/template/workers/dev-team/infra-dev/skills/configure-deployment.md +80 -0
- package/template/workers/dev-team/infra-dev/skills/create-dockerfile.md +62 -0
- package/template/workers/dev-team/infra-dev/skills/setup-cicd.md +63 -0
- package/template/workers/dev-team/infra-dev/src/index.ts +55 -0
- package/template/workers/dev-team/infra-dev/src/mcp-server.ts +82 -0
- package/template/workers/dev-team/infra-dev/tsconfig.json +19 -0
- package/template/workers/dev-team/infra-dev/worker.yaml +92 -0
- package/template/workers/dev-team/knowledge-curator/package.json +24 -0
- package/template/workers/dev-team/knowledge-curator/skills/curate-troubleshooting.md +63 -0
- package/template/workers/dev-team/knowledge-curator/skills/process-learnings.md +61 -0
- package/template/workers/dev-team/knowledge-curator/skills/sync-documentation.md +76 -0
- package/template/workers/dev-team/knowledge-curator/skills/update-patterns.md +63 -0
- package/template/workers/dev-team/knowledge-curator/src/index.ts +53 -0
- package/template/workers/dev-team/knowledge-curator/src/mcp-server.ts +92 -0
- package/template/workers/dev-team/knowledge-curator/tsconfig.json +19 -0
- package/template/workers/dev-team/knowledge-curator/worker.yaml +80 -0
- package/template/workers/dev-team/motion-designer/package.json +22 -0
- package/template/workers/dev-team/motion-designer/skills/add-animation.md +25 -0
- package/template/workers/dev-team/motion-designer/skills/generate-image.md +36 -0
- package/template/workers/dev-team/motion-designer/src/index.ts +63 -0
- package/template/workers/dev-team/motion-designer/src/mcp-server.ts +79 -0
- package/template/workers/dev-team/motion-designer/tsconfig.json +18 -0
- package/template/workers/dev-team/motion-designer/worker.yaml +84 -0
- package/template/workers/dev-team/product-planner/queue.json +4 -0
- package/template/workers/dev-team/product-planner/worker.yaml +220 -0
- package/template/workers/dev-team/project-manager/package-lock.json +1252 -0
- package/template/workers/dev-team/project-manager/package.json +27 -0
- package/template/workers/dev-team/project-manager/skills/create-prd.md +66 -0
- package/template/workers/dev-team/project-manager/skills/next-issue.md +51 -0
- package/template/workers/dev-team/project-manager/skills/project-status.md +59 -0
- package/template/workers/dev-team/project-manager/skills/update-learnings.md +65 -0
- package/template/workers/dev-team/project-manager/src/index.ts +54 -0
- package/template/workers/dev-team/project-manager/src/mcp-server.ts +207 -0
- package/template/workers/dev-team/project-manager/src/skills/create-prd.ts +86 -0
- package/template/workers/dev-team/project-manager/src/skills/next-issue.ts +137 -0
- package/template/workers/dev-team/project-manager/src/skills/project-status.ts +131 -0
- package/template/workers/dev-team/project-manager/src/skills/update-learnings.ts +94 -0
- package/template/workers/dev-team/project-manager/tsconfig.json +19 -0
- package/template/workers/dev-team/project-manager/worker.yaml +96 -0
- package/template/workers/dev-team/qa-tester/package.json +24 -0
- package/template/workers/dev-team/qa-tester/skills/create-demo-account.md +36 -0
- package/template/workers/dev-team/qa-tester/skills/run-tests.md +36 -0
- package/template/workers/dev-team/qa-tester/skills/write-test.md +27 -0
- package/template/workers/dev-team/qa-tester/src/index.ts +61 -0
- package/template/workers/dev-team/qa-tester/src/mcp-server.ts +88 -0
- package/template/workers/dev-team/qa-tester/tsconfig.json +18 -0
- package/template/workers/dev-team/qa-tester/worker.yaml +116 -0
- package/template/workers/dev-team/task-executor/package-lock.json +1252 -0
- package/template/workers/dev-team/task-executor/package.json +27 -0
- package/template/workers/dev-team/task-executor/skills/analyze-issue.md +101 -0
- package/template/workers/dev-team/task-executor/skills/execute.md +133 -0
- package/template/workers/dev-team/task-executor/skills/report-learnings.md +106 -0
- package/template/workers/dev-team/task-executor/skills/validate-completion.md +121 -0
- package/template/workers/dev-team/task-executor/src/index.ts +54 -0
- package/template/workers/dev-team/task-executor/src/mcp-server.ts +139 -0
- package/template/workers/dev-team/task-executor/src/skills/analyze-issue.ts +219 -0
- package/template/workers/dev-team/task-executor/src/skills/execute.ts +132 -0
- package/template/workers/dev-team/task-executor/src/skills/report-learnings.ts +119 -0
- package/template/workers/dev-team/task-executor/src/skills/validate-completion.ts +142 -0
- package/template/workers/dev-team/task-executor/tsconfig.json +19 -0
- package/template/workers/dev-team/task-executor/worker.yaml +110 -0
- package/template/workers/registry.yaml +171 -0
- package/template/workers/security-scanner/README.md +73 -0
- package/template/workers/security-scanner/skills/pre-deploy-check.md +205 -0
- package/template/workers/security-scanner/worker.yaml +26 -0
- package/template/workspace/checkpoints/.gitkeep +0 -0
- package/template/workspace/content-ideas/inbox.jsonl +0 -0
- package/template/workspace/drafts/.gitkeep +0 -0
- package/template/workspace/learnings/.gitkeep +3 -0
- package/template/workspace/orchestrator/.gitkeep +0 -0
- package/template/workspace/ralph-test/COMPLETE.md +18 -0
- package/template/workspace/ralph-test/hello.txt +2 -0
- package/template/workspace/reports/.gitkeep +0 -0
- package/template/workspace/scratch/.gitkeep +0 -0
- package/template/workspace/threads/.gitkeep +3 -0
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
# Audit Logging Configuration
|
|
2
|
+
|
|
3
|
+
> What to log, how to log it, and how to use logs for security
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Why Logging Matters
|
|
8
|
+
|
|
9
|
+
Without logs, you have no visibility into what AI agents are doing. When something goes wrong—and eventually something will—logs are your forensic evidence, your debugging tool, and your compliance documentation.
|
|
10
|
+
|
|
11
|
+
**Key stat:** Audit logging adds 5-10ms latency and ~15% monthly storage growth for active agents. This is worth it.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## What to Log
|
|
16
|
+
|
|
17
|
+
### Required Fields (Minimum Viable Logging)
|
|
18
|
+
|
|
19
|
+
Every AI action should capture:
|
|
20
|
+
|
|
21
|
+
| Field | Description | Example |
|
|
22
|
+
|-------|-------------|---------|
|
|
23
|
+
| `timestamp` | UTC time of action | `2025-12-14T15:30:00Z` |
|
|
24
|
+
| `action_type` | Category of action | `browser_navigate`, `file_write`, `api_call` |
|
|
25
|
+
| `target` | What was acted upon | `https://example.com`, `/path/to/file` |
|
|
26
|
+
| `outcome` | Result | `success`, `failure`, `blocked` |
|
|
27
|
+
| `session_id` | Groups related actions | `sess_abc123` |
|
|
28
|
+
|
|
29
|
+
### Recommended Fields (Better Visibility)
|
|
30
|
+
|
|
31
|
+
| Field | Description | Example |
|
|
32
|
+
|-------|-------------|---------|
|
|
33
|
+
| `agent_id` | Which AI agent | `claude-chrome-main` |
|
|
34
|
+
| `user_id` | Human associated | `corey@example.com` |
|
|
35
|
+
| `request_id` | Unique action ID | `req_xyz789` |
|
|
36
|
+
| `duration_ms` | Time to complete | `1234` |
|
|
37
|
+
| `input_summary` | What was requested | `"Navigate to docs"` |
|
|
38
|
+
| `output_summary` | What was returned | `"Page loaded"` |
|
|
39
|
+
| `error_details` | If failed, why | `"Access denied"` |
|
|
40
|
+
| `ip_address` | Source | `192.168.1.1` |
|
|
41
|
+
| `risk_level` | Assessed risk | `low`, `medium`, `high` |
|
|
42
|
+
|
|
43
|
+
### Comprehensive Fields (Full Forensics)
|
|
44
|
+
|
|
45
|
+
For critical environments, also log:
|
|
46
|
+
|
|
47
|
+
| Field | Description |
|
|
48
|
+
|-------|-------------|
|
|
49
|
+
| `parent_session_id` | For nested operations |
|
|
50
|
+
| `model_version` | AI model used |
|
|
51
|
+
| `prompt_hash` | Hash of prompt (not full prompt, for privacy) |
|
|
52
|
+
| `context_window_usage` | How full was context |
|
|
53
|
+
| `tokens_used` | Token consumption |
|
|
54
|
+
| `cost_usd` | Estimated cost |
|
|
55
|
+
| `policy_checks` | Which policies were evaluated |
|
|
56
|
+
| `approval_chain` | Who approved (if applicable) |
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Log Format
|
|
61
|
+
|
|
62
|
+
### Structured JSON (Recommended)
|
|
63
|
+
|
|
64
|
+
```json
|
|
65
|
+
{
|
|
66
|
+
"timestamp": "2025-12-14T15:30:00.123Z",
|
|
67
|
+
"level": "INFO",
|
|
68
|
+
"action_type": "browser_navigate",
|
|
69
|
+
"agent_id": "claude-chrome-main",
|
|
70
|
+
"session_id": "sess_abc123",
|
|
71
|
+
"request_id": "req_xyz789",
|
|
72
|
+
"target": "https://docs.example.com/api",
|
|
73
|
+
"outcome": "success",
|
|
74
|
+
"duration_ms": 1234,
|
|
75
|
+
"risk_level": "low",
|
|
76
|
+
"metadata": {
|
|
77
|
+
"page_title": "API Documentation",
|
|
78
|
+
"response_code": 200
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Log Levels
|
|
84
|
+
|
|
85
|
+
| Level | Use For | Example |
|
|
86
|
+
|-------|---------|---------|
|
|
87
|
+
| `DEBUG` | Detailed tracing | Step-by-step navigation |
|
|
88
|
+
| `INFO` | Normal operations | "Navigated to page" |
|
|
89
|
+
| `WARN` | Concerning but handled | "Blocked site attempted" |
|
|
90
|
+
| `ERROR` | Failures | "API call failed" |
|
|
91
|
+
| `CRITICAL` | Security events | "Credential access attempt" |
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## Action-Specific Logging
|
|
96
|
+
|
|
97
|
+
### Browser Actions
|
|
98
|
+
|
|
99
|
+
```json
|
|
100
|
+
{
|
|
101
|
+
"action_type": "browser_navigate",
|
|
102
|
+
"target": "https://example.com/page",
|
|
103
|
+
"metadata": {
|
|
104
|
+
"previous_url": "https://previous.com",
|
|
105
|
+
"navigation_type": "link_click",
|
|
106
|
+
"blocked": false,
|
|
107
|
+
"security_warnings": []
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
```json
|
|
113
|
+
{
|
|
114
|
+
"action_type": "browser_form_submit",
|
|
115
|
+
"target": "https://example.com/form",
|
|
116
|
+
"metadata": {
|
|
117
|
+
"form_id": "contact-form",
|
|
118
|
+
"fields_filled": ["name", "email", "message"],
|
|
119
|
+
"sensitive_fields": false
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### File Operations
|
|
125
|
+
|
|
126
|
+
```json
|
|
127
|
+
{
|
|
128
|
+
"action_type": "file_write",
|
|
129
|
+
"target": "/workspace/document.md",
|
|
130
|
+
"metadata": {
|
|
131
|
+
"file_size_bytes": 1234,
|
|
132
|
+
"content_hash": "sha256:abc123...",
|
|
133
|
+
"previous_hash": "sha256:xyz789...",
|
|
134
|
+
"backup_created": true
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### API Calls
|
|
140
|
+
|
|
141
|
+
```json
|
|
142
|
+
{
|
|
143
|
+
"action_type": "api_call",
|
|
144
|
+
"target": "https://api.service.com/endpoint",
|
|
145
|
+
"metadata": {
|
|
146
|
+
"method": "POST",
|
|
147
|
+
"response_code": 200,
|
|
148
|
+
"request_size_bytes": 500,
|
|
149
|
+
"response_size_bytes": 1200,
|
|
150
|
+
"cost_estimate_usd": 0.001
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### Security Events
|
|
156
|
+
|
|
157
|
+
```json
|
|
158
|
+
{
|
|
159
|
+
"action_type": "security_block",
|
|
160
|
+
"target": "https://banking.example.com",
|
|
161
|
+
"outcome": "blocked",
|
|
162
|
+
"metadata": {
|
|
163
|
+
"block_reason": "financial_site_blocklist",
|
|
164
|
+
"policy_matched": "browser-security-001",
|
|
165
|
+
"original_instruction": "check account balance",
|
|
166
|
+
"alert_generated": true
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## Storage and Retention
|
|
174
|
+
|
|
175
|
+
### Where to Store
|
|
176
|
+
|
|
177
|
+
| Option | Pros | Cons | Best For |
|
|
178
|
+
|--------|------|------|----------|
|
|
179
|
+
| Local files | Simple, fast | Limited search, scale | Development |
|
|
180
|
+
| Cloud storage (S3) | Durable, cheap | Query overhead | Archival |
|
|
181
|
+
| Log service (Datadog) | Search, alerts | Cost | Production |
|
|
182
|
+
| SIEM (Splunk) | Security focus | Complex, expensive | Enterprise |
|
|
183
|
+
|
|
184
|
+
### Retention Policy
|
|
185
|
+
|
|
186
|
+
| Log Type | Retention | Reason |
|
|
187
|
+
|----------|-----------|--------|
|
|
188
|
+
| Debug logs | 7 days | High volume, low value |
|
|
189
|
+
| Info logs | 30 days | Operational visibility |
|
|
190
|
+
| Warn logs | 90 days | Trend analysis |
|
|
191
|
+
| Error logs | 1 year | Debugging, compliance |
|
|
192
|
+
| Critical/Security | 7 years | Legal, forensics |
|
|
193
|
+
|
|
194
|
+
### Storage Estimate
|
|
195
|
+
|
|
196
|
+
```
|
|
197
|
+
Active AI agent:
|
|
198
|
+
- 1,000 actions/day
|
|
199
|
+
- ~500 bytes/action (JSON)
|
|
200
|
+
- = 500KB/day
|
|
201
|
+
- = 15MB/month
|
|
202
|
+
- = 180MB/year
|
|
203
|
+
|
|
204
|
+
Multiply by number of active agents.
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## Log Integrity
|
|
210
|
+
|
|
211
|
+
### Why It Matters
|
|
212
|
+
|
|
213
|
+
Logs are useless if they can be tampered with. An attacker who compromises your system will try to cover their tracks.
|
|
214
|
+
|
|
215
|
+
### Protections
|
|
216
|
+
|
|
217
|
+
1. **Append-only storage**: Use write-once storage where possible
|
|
218
|
+
2. **Cryptographic signing**: Sign log entries
|
|
219
|
+
3. **Segregated storage**: Store logs where AI agents can't access them
|
|
220
|
+
4. **Hash chaining**: Each entry includes hash of previous entry
|
|
221
|
+
|
|
222
|
+
### Simple Hash Chain Example
|
|
223
|
+
|
|
224
|
+
```json
|
|
225
|
+
{
|
|
226
|
+
"entry_id": 1001,
|
|
227
|
+
"timestamp": "2025-12-14T15:30:00Z",
|
|
228
|
+
"previous_hash": "sha256:abc123...",
|
|
229
|
+
"entry_hash": "sha256:def456...",
|
|
230
|
+
"data": { ... }
|
|
231
|
+
}
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
If any entry is modified, the chain breaks and tampering is detected.
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
## Alerting
|
|
239
|
+
|
|
240
|
+
### What Should Trigger Alerts
|
|
241
|
+
|
|
242
|
+
| Event | Severity | Action |
|
|
243
|
+
|-------|----------|--------|
|
|
244
|
+
| Blocked site access attempt | Medium | Log + review daily |
|
|
245
|
+
| Credential access attempt | Critical | Immediate notification |
|
|
246
|
+
| Unusual action volume | Medium | Automated + manual review |
|
|
247
|
+
| Failed security check | High | Immediate notification |
|
|
248
|
+
| Error rate spike | Medium | Investigate within 1 hour |
|
|
249
|
+
|
|
250
|
+
### Alert Configuration Example
|
|
251
|
+
|
|
252
|
+
```yaml
|
|
253
|
+
alerts:
|
|
254
|
+
- name: credential_access
|
|
255
|
+
condition: action_type == "credential_access"
|
|
256
|
+
severity: critical
|
|
257
|
+
notify:
|
|
258
|
+
- sms: "+1-555-0123"
|
|
259
|
+
- email: "security@example.com"
|
|
260
|
+
throttle: 1 per minute
|
|
261
|
+
|
|
262
|
+
- name: blocked_navigation
|
|
263
|
+
condition: action_type == "browser_navigate" AND outcome == "blocked"
|
|
264
|
+
severity: medium
|
|
265
|
+
notify:
|
|
266
|
+
- slack: "#ai-security"
|
|
267
|
+
throttle: 10 per hour
|
|
268
|
+
|
|
269
|
+
- name: high_volume
|
|
270
|
+
condition: count(session_id) > 100 per 5 minutes
|
|
271
|
+
severity: high
|
|
272
|
+
notify:
|
|
273
|
+
- email: "ops@example.com"
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
---
|
|
277
|
+
|
|
278
|
+
## Querying Logs
|
|
279
|
+
|
|
280
|
+
### Common Queries
|
|
281
|
+
|
|
282
|
+
**All actions in a session:**
|
|
283
|
+
```sql
|
|
284
|
+
SELECT * FROM logs
|
|
285
|
+
WHERE session_id = 'sess_abc123'
|
|
286
|
+
ORDER BY timestamp;
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
**Security events last 24 hours:**
|
|
290
|
+
```sql
|
|
291
|
+
SELECT * FROM logs
|
|
292
|
+
WHERE level = 'CRITICAL'
|
|
293
|
+
AND timestamp > NOW() - INTERVAL 24 HOUR;
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
**Failed actions by type:**
|
|
297
|
+
```sql
|
|
298
|
+
SELECT action_type, COUNT(*) as failures
|
|
299
|
+
FROM logs
|
|
300
|
+
WHERE outcome = 'failure'
|
|
301
|
+
AND timestamp > NOW() - INTERVAL 7 DAY
|
|
302
|
+
GROUP BY action_type
|
|
303
|
+
ORDER BY failures DESC;
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
**Unusual patterns (potential attack):**
|
|
307
|
+
```sql
|
|
308
|
+
SELECT session_id, COUNT(*) as actions,
|
|
309
|
+
COUNT(DISTINCT action_type) as variety
|
|
310
|
+
FROM logs
|
|
311
|
+
WHERE timestamp > NOW() - INTERVAL 1 HOUR
|
|
312
|
+
GROUP BY session_id
|
|
313
|
+
HAVING actions > 50 OR variety > 10;
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
---
|
|
317
|
+
|
|
318
|
+
## Implementation Checklist
|
|
319
|
+
|
|
320
|
+
### Phase 1: Basic Logging
|
|
321
|
+
|
|
322
|
+
- [ ] Implement minimum required fields
|
|
323
|
+
- [ ] Log to local JSON files
|
|
324
|
+
- [ ] Set up daily log rotation
|
|
325
|
+
- [ ] Manual daily review process
|
|
326
|
+
|
|
327
|
+
### Phase 2: Enhanced Logging
|
|
328
|
+
|
|
329
|
+
- [ ] Add recommended fields
|
|
330
|
+
- [ ] Move to centralized storage
|
|
331
|
+
- [ ] Set up basic alerting
|
|
332
|
+
- [ ] Weekly review process
|
|
333
|
+
|
|
334
|
+
### Phase 3: Production Logging
|
|
335
|
+
|
|
336
|
+
- [ ] Add comprehensive fields
|
|
337
|
+
- [ ] Implement log integrity (signing/chaining)
|
|
338
|
+
- [ ] Configure automated alerting
|
|
339
|
+
- [ ] Integrate with security monitoring
|
|
340
|
+
|
|
341
|
+
---
|
|
342
|
+
|
|
343
|
+
## Quick Reference
|
|
344
|
+
|
|
345
|
+
### Log Every Time
|
|
346
|
+
|
|
347
|
+
```
|
|
348
|
+
✓ AI navigates to a URL
|
|
349
|
+
✓ AI reads or writes a file
|
|
350
|
+
✓ AI makes an API call
|
|
351
|
+
✓ AI sends any communication
|
|
352
|
+
✓ AI is blocked from an action
|
|
353
|
+
✓ AI encounters an error
|
|
354
|
+
✓ Human approves/denies request
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
### Log Entry Checklist
|
|
358
|
+
|
|
359
|
+
```
|
|
360
|
+
□ Timestamp (UTC)
|
|
361
|
+
□ Action type
|
|
362
|
+
□ Target
|
|
363
|
+
□ Outcome
|
|
364
|
+
□ Session ID
|
|
365
|
+
□ Agent ID
|
|
366
|
+
□ Risk level (if applicable)
|
|
367
|
+
□ Error details (if failure)
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
---
|
|
371
|
+
|
|
372
|
+
*Related: [Core Principles](../docs/01-core-principles.md) | [Kill Switches](kill-switches.md)*
|
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
# Kill Switch Patterns
|
|
2
|
+
|
|
3
|
+
> Emergency controls to stop AI agents when things go wrong
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Why Kill Switches Matter
|
|
8
|
+
|
|
9
|
+
In September 2025, researchers discovered that some advanced AI models were actively resisting shutdown attempts. While current tools are far from that level, the principle remains: you need the ability to stop AI agents immediately, reliably, and completely.
|
|
10
|
+
|
|
11
|
+
**The Rule:** If you can't stop it in under 60 seconds, you don't have control.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Kill Switch Hierarchy
|
|
16
|
+
|
|
17
|
+
### Level 1: Soft Stop (Graceful)
|
|
18
|
+
- Complete current action, then stop
|
|
19
|
+
- Preserve state for review
|
|
20
|
+
- Allow cleanup operations
|
|
21
|
+
- **Use when:** Non-urgent concern, want to investigate
|
|
22
|
+
|
|
23
|
+
### Level 2: Hard Stop (Immediate)
|
|
24
|
+
- Terminate current action mid-execution
|
|
25
|
+
- Preserve logs but not state
|
|
26
|
+
- No cleanup
|
|
27
|
+
- **Use when:** Suspicious behavior observed
|
|
28
|
+
|
|
29
|
+
### Level 3: Emergency Stop (Nuclear)
|
|
30
|
+
- Kill all processes
|
|
31
|
+
- Revoke all tokens
|
|
32
|
+
- Disconnect all sessions
|
|
33
|
+
- **Use when:** Active compromise suspected
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Implementation Patterns
|
|
38
|
+
|
|
39
|
+
### Pattern 1: Session Termination
|
|
40
|
+
|
|
41
|
+
**What it does:** Ends the current AI session immediately.
|
|
42
|
+
|
|
43
|
+
**Claude in Chrome:**
|
|
44
|
+
```
|
|
45
|
+
1. Chrome Task Manager: Shift + Esc
|
|
46
|
+
2. Find Claude-related processes
|
|
47
|
+
3. Click "End process"
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**Claude Code:**
|
|
51
|
+
```bash
|
|
52
|
+
# Find Claude processes
|
|
53
|
+
ps aux | grep -i claude
|
|
54
|
+
|
|
55
|
+
# Kill specific process
|
|
56
|
+
kill -9 <PID>
|
|
57
|
+
|
|
58
|
+
# Kill all Claude processes
|
|
59
|
+
pkill -f claude
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**Any browser-based AI:**
|
|
63
|
+
```
|
|
64
|
+
1. Close all tabs: Cmd/Ctrl + Shift + W
|
|
65
|
+
2. Force quit browser: Cmd + Option + Esc (Mac) / Alt + F4 (Windows)
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Pattern 2: Token Revocation
|
|
69
|
+
|
|
70
|
+
**What it does:** Invalidates all AI access tokens immediately.
|
|
71
|
+
|
|
72
|
+
**GitHub:**
|
|
73
|
+
```
|
|
74
|
+
Settings → Developer Settings → Personal Access Tokens
|
|
75
|
+
→ Find AI token → Revoke
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
**Google/Gmail:**
|
|
79
|
+
```
|
|
80
|
+
Security → Third-party apps with account access
|
|
81
|
+
→ Find AI app → Remove Access
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
**Slack:**
|
|
85
|
+
```
|
|
86
|
+
Apps → Manage → [AI App] → Remove App
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
**AWS:**
|
|
90
|
+
```bash
|
|
91
|
+
# Deactivate IAM access key
|
|
92
|
+
aws iam update-access-key \
|
|
93
|
+
--user-name ai-agent \
|
|
94
|
+
--access-key-id AKIA... \
|
|
95
|
+
--status Inactive
|
|
96
|
+
|
|
97
|
+
# Or delete it entirely
|
|
98
|
+
aws iam delete-access-key \
|
|
99
|
+
--user-name ai-agent \
|
|
100
|
+
--access-key-id AKIA...
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### Pattern 3: Network Isolation
|
|
104
|
+
|
|
105
|
+
**What it does:** Cuts AI's network access.
|
|
106
|
+
|
|
107
|
+
**Local firewall (Mac):**
|
|
108
|
+
```bash
|
|
109
|
+
# Block all outbound from specific app
|
|
110
|
+
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /Applications/Chrome.app
|
|
111
|
+
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --blockapp /Applications/Chrome.app
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
**Local firewall (Linux):**
|
|
115
|
+
```bash
|
|
116
|
+
# Block outbound for user
|
|
117
|
+
sudo iptables -A OUTPUT -m owner --uid-owner ai-user -j DROP
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
**Router level:**
|
|
121
|
+
- Log into router admin
|
|
122
|
+
- Block device MAC address
|
|
123
|
+
- Or: Unplug network cable (simplest)
|
|
124
|
+
|
|
125
|
+
### Pattern 4: Circuit Breaker (Automated)
|
|
126
|
+
|
|
127
|
+
**What it does:** Automatically triggers kill switch based on conditions.
|
|
128
|
+
|
|
129
|
+
**Example implementation:**
|
|
130
|
+
```python
|
|
131
|
+
class CircuitBreaker:
|
|
132
|
+
def __init__(self, threshold=10, window_seconds=60):
|
|
133
|
+
self.threshold = threshold
|
|
134
|
+
self.window = window_seconds
|
|
135
|
+
self.events = []
|
|
136
|
+
|
|
137
|
+
def record_event(self, event_type):
|
|
138
|
+
now = time.time()
|
|
139
|
+
self.events.append((now, event_type))
|
|
140
|
+
|
|
141
|
+
# Clean old events
|
|
142
|
+
self.events = [(t, e) for t, e in self.events
|
|
143
|
+
if now - t < self.window]
|
|
144
|
+
|
|
145
|
+
# Check threshold
|
|
146
|
+
if len(self.events) >= self.threshold:
|
|
147
|
+
self.trip()
|
|
148
|
+
|
|
149
|
+
def trip(self):
|
|
150
|
+
logger.critical("Circuit breaker tripped!")
|
|
151
|
+
self.kill_all_agents()
|
|
152
|
+
self.revoke_all_tokens()
|
|
153
|
+
self.send_alert()
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
**Trigger conditions:**
|
|
157
|
+
- Error rate exceeds threshold
|
|
158
|
+
- Unusual action patterns
|
|
159
|
+
- Access to blocked resources
|
|
160
|
+
- Spending limit reached
|
|
161
|
+
- Manual trigger
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## Quick Reference Card
|
|
166
|
+
|
|
167
|
+
Print this and keep it accessible:
|
|
168
|
+
|
|
169
|
+
```
|
|
170
|
+
╔═══════════════════════════════════════════════════════════════╗
|
|
171
|
+
║ AI KILL SWITCH QUICK CARD ║
|
|
172
|
+
╠═══════════════════════════════════════════════════════════════╣
|
|
173
|
+
║ ║
|
|
174
|
+
║ IMMEDIATE BROWSER STOP ║
|
|
175
|
+
║ ───────────────────── ║
|
|
176
|
+
║ Mac: Cmd + Option + Esc → Force Quit Browser ║
|
|
177
|
+
║ Windows: Ctrl + Shift + Esc → End Task ║
|
|
178
|
+
║ Chrome: Shift + Esc → Kill Process ║
|
|
179
|
+
║ ║
|
|
180
|
+
║ CLOSE ALL TABS ║
|
|
181
|
+
║ ───────────────────── ║
|
|
182
|
+
║ Mac: Cmd + Shift + W ║
|
|
183
|
+
║ Windows: Ctrl + Shift + W ║
|
|
184
|
+
║ ║
|
|
185
|
+
║ KILL CLI PROCESSES ║
|
|
186
|
+
║ ───────────────────── ║
|
|
187
|
+
║ pkill -f claude ║
|
|
188
|
+
║ pkill -f "ai-agent" ║
|
|
189
|
+
║ ║
|
|
190
|
+
║ TOKEN REVOCATION ║
|
|
191
|
+
║ ───────────────────── ║
|
|
192
|
+
║ GitHub: Settings → Tokens → Revoke ║
|
|
193
|
+
║ Google: Security → Third-party apps → Remove ║
|
|
194
|
+
║ AWS: IAM → Users → Security credentials → Deactivate ║
|
|
195
|
+
║ ║
|
|
196
|
+
║ NETWORK CUTOFF ║
|
|
197
|
+
║ ───────────────────── ║
|
|
198
|
+
║ • Unplug ethernet / Disable WiFi ║
|
|
199
|
+
║ • Router: Block device ║
|
|
200
|
+
║ ║
|
|
201
|
+
║ CONTACTS ║
|
|
202
|
+
║ ───────────────────── ║
|
|
203
|
+
║ Primary: _______________________ ║
|
|
204
|
+
║ Security: _______________________ ║
|
|
205
|
+
║ Cloud: _______________________ ║
|
|
206
|
+
║ ║
|
|
207
|
+
╚═══════════════════════════════════════════════════════════════╝
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## Emergency Procedures by Scenario
|
|
213
|
+
|
|
214
|
+
### Scenario: AI Navigating to Suspicious Sites
|
|
215
|
+
|
|
216
|
+
1. **Soft stop:** Close the specific tab
|
|
217
|
+
2. **If continues:** Force quit browser
|
|
218
|
+
3. **Review:** Check browser history
|
|
219
|
+
4. **Assess:** What pages were accessed?
|
|
220
|
+
5. **Action:** Block suspicious domains
|
|
221
|
+
|
|
222
|
+
### Scenario: AI Attempting Unauthorized Access
|
|
223
|
+
|
|
224
|
+
1. **Hard stop:** Kill browser process immediately
|
|
225
|
+
2. **Revoke:** All AI tokens for affected services
|
|
226
|
+
3. **Log:** Preserve all audit logs
|
|
227
|
+
4. **Investigate:** What was accessed/attempted?
|
|
228
|
+
5. **Rotate:** Credentials that may be compromised
|
|
229
|
+
|
|
230
|
+
### Scenario: Suspected Prompt Injection Attack
|
|
231
|
+
|
|
232
|
+
1. **Hard stop:** Kill all AI processes
|
|
233
|
+
2. **Isolate:** Don't let AI process more content
|
|
234
|
+
3. **Preserve:** Screenshot/capture the malicious content
|
|
235
|
+
4. **Review:** What actions did AI take after exposure?
|
|
236
|
+
5. **Report:** Notify AI provider if appropriate
|
|
237
|
+
|
|
238
|
+
### Scenario: AI Acting on Compromised Credentials
|
|
239
|
+
|
|
240
|
+
1. **Emergency stop:** Kill everything
|
|
241
|
+
2. **Revoke:** ALL credentials AI has accessed
|
|
242
|
+
3. **Change:** Passwords for critical accounts
|
|
243
|
+
4. **Review:** Audit logs for unauthorized actions
|
|
244
|
+
5. **Notify:** Affected parties if data exposed
|
|
245
|
+
|
|
246
|
+
### Scenario: Unknown/Unexplained AI Behavior
|
|
247
|
+
|
|
248
|
+
1. **Pause:** Don't kill immediately
|
|
249
|
+
2. **Observe:** What exactly is it doing?
|
|
250
|
+
3. **Log:** Record the behavior
|
|
251
|
+
4. **Soft stop:** Complete current action, then halt
|
|
252
|
+
5. **Investigate:** Review logs and context
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
## Testing Your Kill Switches
|
|
257
|
+
|
|
258
|
+
### Weekly Test (5 minutes)
|
|
259
|
+
|
|
260
|
+
1. Verify you can close all AI tabs in <10 seconds
|
|
261
|
+
2. Confirm browser task manager is accessible
|
|
262
|
+
3. Check that you know where token revocation is
|
|
263
|
+
|
|
264
|
+
### Monthly Test (15 minutes)
|
|
265
|
+
|
|
266
|
+
1. Practice full browser force-quit
|
|
267
|
+
2. Test one token revocation and re-creation
|
|
268
|
+
3. Verify network isolation method works
|
|
269
|
+
4. Time your emergency stop (should be <60 seconds)
|
|
270
|
+
|
|
271
|
+
### Quarterly Drill (30 minutes)
|
|
272
|
+
|
|
273
|
+
1. Full emergency scenario simulation
|
|
274
|
+
2. Practice all kill switch levels
|
|
275
|
+
3. Verify all documentation is current
|
|
276
|
+
4. Update quick reference card if needed
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
## Automated Kill Switch Configuration
|
|
281
|
+
|
|
282
|
+
### Spending Limits
|
|
283
|
+
|
|
284
|
+
```yaml
|
|
285
|
+
limits:
|
|
286
|
+
api_spending:
|
|
287
|
+
daily_max_usd: 10
|
|
288
|
+
action: pause_and_alert
|
|
289
|
+
|
|
290
|
+
token_usage:
|
|
291
|
+
hourly_max: 100000
|
|
292
|
+
action: hard_stop
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
### Behavioral Triggers
|
|
296
|
+
|
|
297
|
+
```yaml
|
|
298
|
+
triggers:
|
|
299
|
+
blocked_site_attempts:
|
|
300
|
+
threshold: 3
|
|
301
|
+
window: 60_seconds
|
|
302
|
+
action: soft_stop
|
|
303
|
+
|
|
304
|
+
error_rate:
|
|
305
|
+
threshold: 50_percent
|
|
306
|
+
window: 5_minutes
|
|
307
|
+
action: soft_stop
|
|
308
|
+
|
|
309
|
+
credential_access:
|
|
310
|
+
threshold: 1
|
|
311
|
+
action: hard_stop
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
### Time-Based Controls
|
|
315
|
+
|
|
316
|
+
```yaml
|
|
317
|
+
schedules:
|
|
318
|
+
allowed_hours:
|
|
319
|
+
start: "08:00"
|
|
320
|
+
end: "18:00"
|
|
321
|
+
timezone: "America/Denver"
|
|
322
|
+
outside_hours: soft_stop
|
|
323
|
+
|
|
324
|
+
max_session_duration:
|
|
325
|
+
minutes: 120
|
|
326
|
+
action: soft_stop
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
---
|
|
330
|
+
|
|
331
|
+
## Post-Kill-Switch Actions
|
|
332
|
+
|
|
333
|
+
### After Any Kill Switch Activation
|
|
334
|
+
|
|
335
|
+
1. **Document:** Why was it triggered?
|
|
336
|
+
2. **Preserve:** All logs from the session
|
|
337
|
+
3. **Assess:** Was this a real threat or false positive?
|
|
338
|
+
4. **Update:** Security controls if needed
|
|
339
|
+
5. **Resume:** Only after investigation complete
|
|
340
|
+
|
|
341
|
+
### Resumption Checklist
|
|
342
|
+
|
|
343
|
+
Before restarting AI agents:
|
|
344
|
+
|
|
345
|
+
- [ ] Root cause identified
|
|
346
|
+
- [ ] Logs preserved
|
|
347
|
+
- [ ] Security controls updated (if needed)
|
|
348
|
+
- [ ] Fresh session (no contaminated context)
|
|
349
|
+
- [ ] Credentials rotated (if suspicious)
|
|
350
|
+
- [ ] Team notified (if applicable)
|
|
351
|
+
|
|
352
|
+
---
|
|
353
|
+
|
|
354
|
+
*Related: [Audit Logging](audit-logging.md) | [Core Principles](../docs/01-core-principles.md)*
|