torusguard 1.3.3 → 1.3.4

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.
Files changed (127) hide show
  1. package/.torusguard/runs/report-latest.html +3 -3
  2. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-115-9a059e/metadata.json +15 -0
  3. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-115-9a059e/minimal_patch_plan.md +21 -0
  4. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-115-9a059e/patch.diff +9 -0
  5. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-119-61557c/metadata.json +15 -0
  6. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-119-61557c/minimal_patch_plan.md +21 -0
  7. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-119-61557c/patch.diff +9 -0
  8. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-265-996ca3/metadata.json +15 -0
  9. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-265-996ca3/minimal_patch_plan.md +21 -0
  10. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-265-996ca3/patch.diff +9 -0
  11. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-503-d11cf8/metadata.json +15 -0
  12. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-503-d11cf8/minimal_patch_plan.md +21 -0
  13. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-503-d11cf8/patch.diff +9 -0
  14. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-79-91f41f/metadata.json +15 -0
  15. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-79-91f41f/minimal_patch_plan.md +21 -0
  16. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-79-91f41f/patch.diff +9 -0
  17. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-002-107-516a40/metadata.json +15 -0
  18. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-002-107-516a40/minimal_patch_plan.md +21 -0
  19. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-002-107-516a40/patch.diff +9 -0
  20. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-002-128-7809a1/metadata.json +15 -0
  21. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-002-128-7809a1/minimal_patch_plan.md +21 -0
  22. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-002-128-7809a1/patch.diff +9 -0
  23. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-002-256-c8a22e/metadata.json +15 -0
  24. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-002-256-c8a22e/minimal_patch_plan.md +21 -0
  25. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-002-256-c8a22e/patch.diff +9 -0
  26. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-003-53-d167b4/metadata.json +15 -0
  27. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-003-53-d167b4/minimal_patch_plan.md +21 -0
  28. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-003-53-d167b4/patch.diff +9 -0
  29. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-platform-001-183-47fd5e/metadata.json +15 -0
  30. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-platform-001-183-47fd5e/minimal_patch_plan.md +21 -0
  31. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-platform-001-183-47fd5e/patch.diff +9 -0
  32. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-209-4f6424/metadata.json +15 -0
  33. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-209-4f6424/minimal_patch_plan.md +21 -0
  34. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-209-4f6424/patch.diff +9 -0
  35. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-257-89bf34/metadata.json +15 -0
  36. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-257-89bf34/minimal_patch_plan.md +21 -0
  37. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-257-89bf34/patch.diff +9 -0
  38. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-341-ce228c/metadata.json +15 -0
  39. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-341-ce228c/minimal_patch_plan.md +21 -0
  40. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-341-ce228c/patch.diff +9 -0
  41. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-355-7b190b/metadata.json +15 -0
  42. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-355-7b190b/minimal_patch_plan.md +21 -0
  43. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-355-7b190b/patch.diff +9 -0
  44. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-64-5af31a/metadata.json +15 -0
  45. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-64-5af31a/minimal_patch_plan.md +21 -0
  46. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-64-5af31a/patch.diff +9 -0
  47. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-9-f51467/metadata.json +15 -0
  48. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-9-f51467/minimal_patch_plan.md +21 -0
  49. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-9-f51467/patch.diff +9 -0
  50. package/.torusguard/runs/run-20260910-120238-audit/findings.json +1520 -0
  51. package/.torusguard/runs/run-20260910-120238-audit/findings.md +560 -0
  52. package/.torusguard/runs/run-20260910-120238-audit/manifest.json +13 -0
  53. package/.torusguard/runs/run-20260910-120238-audit/recheck.md +86 -0
  54. package/.torusguard/runs/run-20260910-120238-audit/remediation.md +262 -0
  55. package/.torusguard/runs/run-20260910-120238-audit/summary.md +5 -0
  56. package/.torusguard/runs/run-20260910-121238-audit/findings.json +794 -0
  57. package/.torusguard/runs/run-20260910-121238-audit/findings.md +344 -0
  58. package/.torusguard/runs/run-20260910-121238-audit/manifest.json +12 -0
  59. package/.torusguard/runs/run-20260910-121238-audit/summary.md +5 -0
  60. package/.torusguard/runs/run-20260910-130454-audit/findings.json +893 -0
  61. package/.torusguard/runs/run-20260910-130454-audit/findings.md +386 -0
  62. package/.torusguard/runs/run-20260910-130454-audit/manifest.json +12 -0
  63. package/.torusguard/runs/run-20260910-130454-audit/summary.md +5 -0
  64. package/.torusguard/runs/run-20260910-130519-audit/findings.json +563 -0
  65. package/.torusguard/runs/run-20260910-130519-audit/findings.md +246 -0
  66. package/.torusguard/runs/run-20260910-130519-audit/manifest.json +12 -0
  67. package/.torusguard/runs/run-20260910-130519-audit/summary.md +5 -0
  68. package/.torusguard/scripts/__pycache__/audit_runner.cpython-311.pyc +0 -0
  69. package/.torusguard/scripts/__pycache__/diff_guard.cpython-311.pyc +0 -0
  70. package/.torusguard/scripts/__pycache__/html_reporter.cpython-311.pyc +0 -0
  71. package/.torusguard/scripts/__pycache__/rules_sync.cpython-311.pyc +0 -0
  72. package/.torusguard/scripts/__pycache__/stack_detect.cpython-311.pyc +0 -0
  73. package/.torusguard/scripts/__pycache__/term_ui.cpython-311.pyc +0 -0
  74. package/.torusguard/scripts/apply_runner.py +138 -100
  75. package/.torusguard/scripts/audit_runner.py +219 -116
  76. package/.torusguard/scripts/harden_runner.py +144 -64
  77. package/.torusguard/scripts/recheck_runner.py +80 -63
  78. package/.torusguard/scripts/recipes_runner.py +38 -31
  79. package/.torusguard/scripts/term_ui.py +162 -0
  80. package/.torusguard/skills/torusguard/SKILL.md +61 -31
  81. package/.torusguard/skills/torusguard-apply/SKILL.md +80 -46
  82. package/.torusguard/skills/torusguard-audit/SKILL.md +83 -70
  83. package/.torusguard/skills/torusguard-authorize/SKILL.md +5 -4
  84. package/.torusguard/skills/torusguard-exploit-check/SKILL.md +6 -5
  85. package/.torusguard/skills/torusguard-full/SKILL.md +1 -1
  86. package/.torusguard/skills/torusguard-harden/SKILL.md +94 -63
  87. package/.torusguard/skills/torusguard-init/SKILL.md +64 -52
  88. package/.torusguard/skills/torusguard-recheck/SKILL.md +77 -53
  89. package/.torusguard/skills/torusguard-report/SKILL.md +72 -54
  90. package/.torusguard/skills/torusguard-status/SKILL.md +58 -42
  91. package/.torusguard/skills/torusguard-verify/SKILL.md +8 -7
  92. package/.torusguard/skills/torusguard-web-validate/SKILL.md +8 -7
  93. package/README.md +4 -3
  94. package/bin/torusguard.js +544 -437
  95. package/package.json +1 -1
  96. package/skills/torusguard/SKILL.md +61 -31
  97. package/skills/torusguard/payload/scripts/apply_runner.py +138 -100
  98. package/skills/torusguard/payload/scripts/audit_runner.py +219 -116
  99. package/skills/torusguard/payload/scripts/harden_runner.py +144 -64
  100. package/skills/torusguard/payload/scripts/recheck_runner.py +80 -63
  101. package/skills/torusguard/payload/scripts/recipes_runner.py +38 -31
  102. package/skills/torusguard/payload/scripts/term_ui.py +162 -0
  103. package/skills/torusguard/payload/skills/torusguard/SKILL.md +61 -31
  104. package/skills/torusguard/payload/skills/torusguard-apply/SKILL.md +80 -46
  105. package/skills/torusguard/payload/skills/torusguard-audit/SKILL.md +83 -70
  106. package/skills/torusguard/payload/skills/torusguard-authorize/SKILL.md +5 -4
  107. package/skills/torusguard/payload/skills/torusguard-exploit-check/SKILL.md +6 -5
  108. package/skills/torusguard/payload/skills/torusguard-full/SKILL.md +1 -1
  109. package/skills/torusguard/payload/skills/torusguard-harden/SKILL.md +94 -63
  110. package/skills/torusguard/payload/skills/torusguard-init/SKILL.md +64 -52
  111. package/skills/torusguard/payload/skills/torusguard-recheck/SKILL.md +77 -53
  112. package/skills/torusguard/payload/skills/torusguard-report/SKILL.md +72 -54
  113. package/skills/torusguard/payload/skills/torusguard-status/SKILL.md +58 -42
  114. package/skills/torusguard/payload/skills/torusguard-verify/SKILL.md +8 -7
  115. package/skills/torusguard/payload/skills/torusguard-web-validate/SKILL.md +8 -7
  116. package/skills/torusguard-apply/SKILL.md +80 -48
  117. package/skills/torusguard-audit/SKILL.md +83 -75
  118. package/skills/torusguard-authorize/SKILL.md +1 -1
  119. package/skills/torusguard-exploit-check/SKILL.md +1 -1
  120. package/skills/torusguard-full/SKILL.md +1 -1
  121. package/skills/torusguard-harden/SKILL.md +94 -67
  122. package/skills/torusguard-init/SKILL.md +64 -53
  123. package/skills/torusguard-recheck/SKILL.md +77 -54
  124. package/skills/torusguard-report/SKILL.md +72 -55
  125. package/skills/torusguard-status/SKILL.md +58 -43
  126. package/skills/torusguard-verify/SKILL.md +1 -1
  127. package/skills/torusguard-web-validate/SKILL.md +1 -1
@@ -1,70 +1,83 @@
1
- ---
2
- name: torusguard-audit
3
- description: Static AST scanning, memory pattern boosting, and 0–100 confidence scoring.
4
- version: 1.0.0
5
- workflow: .torusguard/workflows/audit.md
6
- tools: Read, Grep, Glob, Write
7
- scripts-binding:
8
- - .torusguard/scripts/finding_scorer.py
9
- - .torusguard/scripts/run_manager.py
10
- ---
11
-
12
- # TorusGuard Audit — Static Code Analysis & Memory Scanning
13
-
14
- ## Objective
15
- Execute static AST analysis, query memory context, compute 0–100 confidence scores with memory boosts, and record findings to runs and memory.
16
-
17
- ---
18
-
19
- ## Execution Steps
20
-
21
- 1. **Run Setup:** Initialize `.torusguard/runs/run-YYYYMMDD-HHMMSS-audit/` via `run_manager.py`.
22
- 2. **Context & Rules:** Load `.torusguard/memory/context.json` for patterns and false positives. Load rules from `.torusguard/rules/active/`.
23
- 3. **AST Scan Sinks:** Match files against active rules:
24
- - `TG-SEC-*`: Secrets and API keys.
25
- - `TG-INPUT-*`: SQL injection, unvalidated input.
26
- - `TG-DB-*`: Unscoped tenant queries (`Model.get(id=id)`).
27
- - `TG-AUTH-*`: Insecure cookies, open CORS.
28
- - `TG-CLIENT-*`: Client bundle secret leaks.
29
- 4. **Stable Fingerprinting:** Compute SHA-256 hash of surrounding AST context.
30
- 5. **Root-Cause Clustering:** Group findings by causal sink (`cluster-tenant-isolation`).
31
- 6. **Scoring:** Calculate 0–100 score via `finding_scorer.py` (applies memory boost/suppression).
32
- 7. **Write Artifacts:** Save `findings.json` and sync findings to memory engine.
33
-
34
- ---
35
-
36
- ## Confidence Scoring Rubric
37
- - **1. Evidence (35):** AST flow (35), regex sink (20), heuristic (10).
38
- - **2. Reproduction (25):** Automated test (25), simulated (15), hypothesis (0).
39
- - **3. Corroboration (15):** >=3 files (15), 2 files (10), single (5).
40
- - **4. Environment (15):** Explicit route (15), ambiguous (8), unknown (0).
41
- - **5. Review Status (10):** Human confirmed (10), agent verified (5), auto (0).
42
- - **Memory Modifier:** False positive (-30), regression (+15), recurring (+10).
43
- - **Bands:** 90–100 (`Confirmed`), 70–89 (`High`), 50–69 (`Medium`), <50 (`Review`).
44
-
45
- ---
46
-
47
- ## Finding Card Format
48
- ```markdown
49
- ### [TG-DB-004] Missing Tenant Scoping in /invoices/
50
- - **Severity**: High | **Confidence**: 90/100 (Confirmed) | **Memory Boost**: +10
51
- - **File**: `views.py:42` | **Cluster**: `cluster-tenant-isolation`
52
- - **Remediation**: Apply `.filter(tenant=request.user.tenant)`.
53
- ```
54
-
55
- ---
56
-
57
- ## Safety Constraints
58
- - Read-only analysis; zero code modifications during audit.
59
- - Exclude build directories (`node_modules/`, `.venv/`, `dist/`).
60
- - Redact secrets before saving to `findings.md`.
61
-
62
- ---
63
-
64
- ## Output Format
65
- ```markdown
66
- 🛡️ [TorusGuard] Static Code Audit Completed
67
- - Run ID: run-YYYYMMDD-HHMMSS-audit | Files: <Count> | Findings: <Count>
68
- - Clusters: <Count> identified | Memory Patterns Applied: <Count>
69
- Next: Run `/torusguard harden` to formulate surgical fixes.
70
- ```
1
+ ---
2
+ name: torusguard-audit
3
+ description: Static AST security scanning, line-shift invariant fingerprinting, root-cause clustering, and 0-100 confidence scoring via CLI or AI Agent.
4
+ version: 1.3.4
5
+ workflow: .torusguard/workflows/audit.md
6
+ tools: Read, Grep, Glob, Write, run_command
7
+ scripts-binding:
8
+ - .torusguard/scripts/audit_runner.py
9
+ - .torusguard/scripts/term_ui.py
10
+ - .torusguard/scripts/finding_scorer.py
11
+ ---
12
+
13
+ # TorusGuard Audit — Static Code Security Analysis
14
+
15
+ ## Objective
16
+ Execute static AST analysis across polyglot project files, evaluate code against 71 canonical security rules across 11 families, assign stable line-shift invariant fingerprints, cluster architectural root causes, and score findings with auditable 0–100 confidence ratings.
17
+
18
+ ---
19
+
20
+ ## Two Execution Modes
21
+
22
+ ### Mode A: Automated CLI Execution
23
+ Run the static security audit from your terminal:
24
+ ```bash
25
+ # Scan current repository
26
+ npx torusguard audit
27
+
28
+ # Scan specific directory or example app
29
+ npx torusguard audit ./examples/vulnerable-react-express
30
+
31
+ # Include test fixtures and spec directories
32
+ npx torusguard audit --include-tests
33
+
34
+ # Output machine-readable JSON
35
+ npx torusguard audit --json
36
+ ```
37
+ **Under the Hood:** Executes `python .torusguard/scripts/audit_runner.py`.
38
+ - Auto-detects repository stack and skips build/cache directories (`node_modules`, `.git`, `.venv`, `dist`, `build`).
39
+ - Evaluates files across 11 canonical security families:
40
+ - `TG-SEC-*`: Hardcoded credentials, private keys, JWT secrets, client env leaks.
41
+ - `TG-INPUT-*`: SQL injection, command injection, path traversal, unsafe HTML rendering.
42
+ - `TG-DB-*`: Missing tenant isolation, service role keys in client code.
43
+ - `TG-AUTH-*`: Plaintext passwords, missing cookie security flags (httpOnly, secure, sameSite).
44
+ - `TG-PLATFORM-*`: Permissive wildcard CORS with credentials, missing security headers.
45
+ - `TG-DIFF-*`: Disabled TLS verification (`verify=False`, `rejectUnauthorized: false`).
46
+ - Generates run directory: `.torusguard/runs/run-YYYYMMDD-HHMMSS-audit/`.
47
+ - Writes `findings.json`, `findings.md`, and `manifest.json`.
48
+ - Displays standardized 75-column terminal cards.
49
+ - Returns exit code `1` if findings are discovered, `0` if clean.
50
+
51
+ ### Mode B: In-Session AI Chat Agent Scan
52
+ When auditing files directly in AI chat:
53
+ 1. **Discover Sinks:** Use `grep_search` and `view_file` to search for dangerous patterns across server and client code.
54
+ 2. **Cluster Root Causes:** Group findings by causal architecture (e.g. `cluster-tenant-isolation`, `cluster-credentials-exposure`, `cluster-injection`).
55
+ 3. **Audit Evidence Sufficiency:** Ensure that user-controlled input reaches the vulnerable sink without prior sanitization or schema validation.
56
+ 4. **Present Actionable Findings:** Display finding cards with severity, rule ID, file, line, and remediation recommendation.
57
+ 5. **Prompt Next Phase:** Guide the operator to `/torusguard harden` or `npx torusguard harden`.
58
+
59
+ ---
60
+
61
+ ## Canonical Rule Families
62
+ | Family | Scope | Example Violations |
63
+ | :--- | :--- | :--- |
64
+ | **TG-SEC** | Secrets & Credentials | Hardcoded JWT secret, API key strings, token logging |
65
+ | **TG-INPUT** | Injection & Input Validation | Raw SQL interpolation, DOM `innerHTML`, `path.join` traversal |
66
+ | **TG-DB** | Database & Tenant Scoping | Unscoped `.objects.get(id=...)`, Prisma missing `tenantId` |
67
+ | **TG-AUTH** | Authentication & Cookies | Insecure cookies (missing httpOnly/secure/sameSite) |
68
+ | **TG-PLATFORM** | Server & Platform Config | Wildcard CORS (`origin: '*'`) with credentials |
69
+ | **TG-DIFF** | Security Bypasses | Disabled TLS verification (`verify=False`) |
70
+
71
+ ---
72
+
73
+ ## Output Card Format
74
+ ```markdown
75
+ ### 🛡️ TorusGuard Static Security Audit Completed
76
+ - **Run ID:** `run-20260910-121618-audit`
77
+ - **Scope:** 7 files evaluated across 11 canonical families
78
+ - **Status:** ✖ CRITICAL FINDINGS DETECTED
79
+ - **Findings:** 2 Critical, 2 High, 2 Medium/Low (6 total)
80
+ - **Clusters:** 3 architectural root causes identified
81
+ - **Artifacts:** `.torusguard/runs/<run_id>/findings.json`
82
+ - **Next Action:** Run `npx torusguard harden` or `/torusguard harden`
83
+ ```
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: torusguard-authorize
3
3
  description: Register and validate runtime target authorization boundaries — scope boundaries, ownership proofs, TTL expiration, and Safety Gate enforcement.
4
- version: 0.9.2
4
+ version: 1.3.4
5
5
  workflow: .torusguard/workflows/authorize.md
6
6
  tools: Read, Grep, Glob, Write
7
7
  scripts-binding:
@@ -24,8 +24,9 @@ Define and validate legal runtime authorization boundaries, verify target owners
24
24
  ```bash
25
25
  python .torusguard/scripts/safety_gate.py check --url <target_url>
26
26
  ```
27
- 5. **Write Scope Record:** Persist authorized targets, rate limits, and expiration timestamp into `.torusguard/config/scope.json`.
28
- 6. **Validate Schema:** Confirm `scope.json` adheres to `auth-boundary.schema.json`.
27
+ 5. **Handle CLI Failures:** If `safety_gate.py` fails or is unavailable, YOU must manually verify the safety invariants and generate the JSON structure below.
28
+ 6. **Write Scope Record:** Persist authorized targets, rate limits, and expiration timestamp into `.torusguard/config/scope.json`.
29
+ 7. **Validate Schema:** Confirm `scope.json` adheres to `auth-boundary.schema.json`.
29
30
 
30
31
  ---
31
32
 
@@ -38,7 +39,7 @@ Define and validate legal runtime authorization boundaries, verify target owners
38
39
 
39
40
  ## Output Format
40
41
  ```markdown
41
- 🔒 [TorusGuard] Target Scope Authorized
42
+ 🔒 [TorusGuard] Target Scope Authorized (AI Assisted)
42
43
  - Target Host: <Host URL> | Environment: <Local / Staging>
43
44
  - Allowed Paths: <Prefixes> | Rate Limit: <Max Req/sec>
44
45
  - Expiration TTL: <Timestamp>
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: torusguard-exploit-check
3
3
  description: Safe, non-destructive confirmation of exploitability using inert canary tokens and sentinels.
4
- version: 0.9.2
4
+ version: 1.3.4
5
5
  workflow: .torusguard/workflows/exploit-check.md
6
6
  tools: Read, Grep, Glob, Bash, Write
7
7
  scripts-binding:
@@ -36,14 +36,15 @@ Before dispatching any exploitability probe:
36
36
 
37
37
  1. **Verify Scope:** Read `scope.json`; assert authorized endpoint.
38
38
  2. **Select Canary:** Choose matching non-destructive probe strategy.
39
- 3. **Dispatch Probe:** Send request with header `X-TorusGuard-AuthID`.
40
- 4. **Classify Status:** Transition finding into one of 5 canonical outcomes:
39
+ 3. **Handle Automation Failure:** If automated exploit check scripts fail, YOU must manually construct the safe HTTP request (using `curl` or `fetch`) and inspect the response.
40
+ 4. **Dispatch Probe:** Send request with header `X-TorusGuard-AuthID`.
41
+ 5. **Classify Status:** Transition finding into one of 5 canonical outcomes:
41
42
  - `Confirmed`: Canary reflected or secondary tenant data leaked.
42
43
  - `Not Reproducible`: Endpoint responded with 401/403 or sanitized input.
43
44
  - `Needs Review`: Ambiguous status code or incomplete response.
44
45
  - `Blocked by Controls`: WAF or rate limiter stopped probe.
45
46
  - `Out of Scope`: Target endpoint is not authorized.
46
- 5. **Record Evidence:** Save trace in `.torusguard/runs/<run_id>/exploit-evidence.md`.
47
+ 6. **Record Evidence:** Save trace in `.torusguard/runs/<run_id>/exploit-evidence.md`.
47
48
 
48
49
  ---
49
50
 
@@ -56,7 +57,7 @@ Before dispatching any exploitability probe:
56
57
 
57
58
  ## Output Format
58
59
  ```markdown
59
- 🎯 [TorusGuard] Exploitability Confirmation
60
+ 🎯 [TorusGuard] Exploitability Confirmation (AI Assisted)
60
61
  - Finding ID: <Finding ID> | Target: <Route>
61
62
  - Status: <Confirmed / Not Reproducible / Blocked>
62
63
  - Evidence: <Response snippet or status code>
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: torusguard-full
3
3
  description: Master 7-stage security pipeline orchestrator — coordinates discovery, authorization, static audit, runtime validation, governed remediation, recheck, and reporting.
4
- version: 0.9.2
4
+ version: 1.3.4
5
5
  workflow: .torusguard/workflows/audit.md
6
6
  tools: Read, Grep, Glob, Bash, Edit, Write
7
7
  scripts-binding:
@@ -1,63 +1,94 @@
1
- ---
2
- name: torusguard-harden
3
- description: Package surgical remediation bundles conforming to the Ponytail Protocol (<= 35 additions, <= 25 deletions).
4
- version: 1.0.0
5
- workflow: .torusguard/workflows/harden.md
6
- tools: Read, Grep, Glob, Write
7
- scripts-binding:
8
- - .torusguard/scripts/run_manager.py
9
- - .torusguard/scripts/diff_guard.py
10
- ---
11
-
12
- # TorusGuard Harden — Governed Remediation & Bundle Packaging
13
-
14
- ## Objective
15
- Formulate minimal, surgical code fixes bound by the Ponytail Protocol ($\le 35$ additions, $\le 25$ deletions), packaging unified diffs into auditable 4-artifact remediation bundles ready for review.
16
-
17
- ---
18
-
19
- ## The Ponytail Protocol
20
- - **Limits:** Additions $\le 35$, Deletions $\le 25$ lines per bundle.
21
- - **Invariants:** Zero full-file rewrites; preserve public APIs and tests.
22
- - **Overflow:** Partition into sequential sub-bundles.
23
-
24
- ---
25
-
26
- ## Bundle Directory Structure
27
- ```
28
- .torusguard/runs/<run_id>/remediation/<finding_id>/
29
- ├── patch.diff # Standard unified diff with line numbers
30
- ├── plan.md # Rationale and root-cause breakdown
31
- ├── verification.md # Test instructions proving fix works
32
- └── rollback.md # Command or steps to revert patch
33
- ```
34
-
35
- ---
36
-
37
- ## Execution Steps
38
-
39
- 1. **Select Finding:** Choose prioritized verified flaw from active run's `findings.md`.
40
- 2. **Read AST Context:** View target file surrounding lines (±15) using `view_file`.
41
- 3. **Formulate Minimal Fix:** Consult `.torusguard/memory/context.json` for verified idioms; parameterize SQL, add tenant filters.
42
- 4. **Validate Line Churn:** Assert additions $\le 35$ and deletions $\le 25$ via `diff_guard.py`.
43
- 5. **Package Bundle:** Write 4 artifacts (`patch.diff`, `plan.md`, `verification.md`, `rollback.md`).
44
- 6. **Flag Sensitive Paths:** Mark changes touching auth or billing with `Requires Sensitive-Path Sign-Off`.
45
-
46
- ---
47
-
48
- ## Safety Constraints
49
- - Dry-run only; do NOT apply modifications to source code during harden.
50
- - Keep surrounding formatting and comments intact.
51
- - Never touch files outside the targeted vulnerable sink.
52
-
53
- ---
54
-
55
- ## Output Format
56
- ```markdown
57
- 🛠️ [TorusGuard] Remediation Bundle Packaged
58
- - Finding Target: <Finding ID> | File: <Path>
59
- - Line Churn: +<Additions> / -<Deletions> (Ponytail: PASS)
60
- - Sensitive Path: <Yes/No>
61
- - Bundle Path: `.torusguard/runs/<run_id>/remediation/<finding_id>/`
62
- Next: Run `/torusguard apply` to review diff and apply with rollback backup.
63
- ```
1
+ ---
2
+ name: torusguard-harden
3
+ description: Package surgical remediation bundles conforming to the Ponytail Protocol (<= 35 additions, <= 25 deletions) via CLI or AI Agent.
4
+ version: 1.3.4
5
+ workflow: .torusguard/workflows/harden.md
6
+ tools: Read, Grep, Glob, Write, run_command
7
+ scripts-binding:
8
+ - .torusguard/scripts/harden_runner.py
9
+ - .torusguard/scripts/diff_guard.py
10
+ - .torusguard/scripts/term_ui.py
11
+ ---
12
+
13
+ # TorusGuard Harden — Governed Remediation & Bundle Packaging
14
+
15
+ ## Objective
16
+ Formulate minimal, surgical code fixes bound by the Ponytail Protocol ($\le 35$ additions, $\le 25$ deletions), packaging unified diffs into auditable remediation bundles ready for review.
17
+
18
+ ---
19
+
20
+ ## Two Execution Modes
21
+
22
+ ### Mode A: Automated CLI Execution (Recommended First Step)
23
+ Run the autonomous remediation engine via the terminal:
24
+ ```bash
25
+ # Harden latest audit run
26
+ npx torusguard harden
27
+
28
+ # Harden specific project directory
29
+ npx torusguard harden ./my-project
30
+
31
+ # Harden specific run ID
32
+ npx torusguard harden --run run-20260910-121618-audit
33
+
34
+ # Machine-readable JSON output
35
+ npx torusguard harden --json
36
+ ```
37
+ **Under the Hood:** Executes `python .torusguard/scripts/harden_runner.py`.
38
+ - Discovers findings in `.torusguard/runs/<run_id>/findings.json`.
39
+ - Matches findings against canonical AST patch templates (`TG-SEC-*`, `TG-INPUT-*`, `TG-DB-*`, `TG-PLATFORM-*`, `TG-AUTH-*`, `TG-DIFF-*`).
40
+ - Validates that every candidate patch strictly satisfies Ponytail bounds ($\le 35$ additions, $\le 25$ deletions).
41
+ - Packages candidate bundles into `.torusguard/runs/<run_id>/bundles/<bundle_id>/` containing `patch.diff`, `minimal_patch_plan.md`, and `metadata.json`.
42
+ - Emits run-level summary `remediation.md`.
43
+ - Renders pixel-perfect 75-column terminal cards.
44
+
45
+ ### Mode B: In-Session AI Chat Agent Remediation
46
+ When findings require complex architectural changes, or when the automated CLI cannot formulate a template match:
47
+ 1. **Locate Target Finding:** Inspect `.torusguard/runs/<run_id>/findings.md` or `findings.json`.
48
+ 2. **Inspect AST Context:** Read surrounding lines ($\pm 15$) of the vulnerable sink using `view_file`.
49
+ 3. **Formulate Minimal Fix:** Craft a surgical code modification:
50
+ - Parameterize SQL queries (replace concatenation with `?` or `$1` or `%s`).
51
+ - Add tenant isolation (`where: { tenantId }`, `organization_id=...`).
52
+ - Replace unsafe HTML injection (`dangerouslySetInnerHTML`, `.innerHTML = ...`) with safe text rendering (`textContent`, React elements).
53
+ - Sanitize path traversal using `path.basename()` or `os.path.basename()`.
54
+ - Constrain wildcard CORS headers to verified origin environment variables.
55
+ - Restore TLS verification flags (`verify=True`, `rejectUnauthorized: true`).
56
+ 4. **Validate Ponytail Bounds:** Count additions ($\le 35$) and deletions ($\le 25$). Never perform full-file rewrites.
57
+ 5. **Package Bundle Artifacts:** Write bundle under `.torusguard/runs/<run_id>/bundles/<bundle_id>/`:
58
+ - `patch.diff`: Standard unified diff.
59
+ - `minimal_patch_plan.md`: Context, rationale, and diff preview.
60
+ - `metadata.json`: Bundle metadata.
61
+ 6. **Report to Operator:** Present proposed diff card and recommend running `/torusguard apply` or `npx torusguard apply`.
62
+
63
+ ---
64
+
65
+ ## Remediation Bundle Structure
66
+ ```
67
+ .torusguard/runs/<run_id>/
68
+ ├── remediation.md # Run-level catalog of formulated candidate patches
69
+ └── bundles/
70
+ └── bnd-<rule_id>-<line>-<hash>/
71
+ ├── patch.diff # Unified diff preview
72
+ ├── minimal_patch_plan.md # Detailed explanation, rationale, and churn stats
73
+ └── metadata.json # Machine-readable bundle metadata
74
+ ```
75
+
76
+ ---
77
+
78
+ ## Non-Negotiable Invariants
79
+ - **Ponytail Limit:** Strict upper bound of $\le 35$ additions and $\le 25$ deletions per bundle.
80
+ - **Dry-Run Rule:** Never modify target source code during `harden`. All edits must be reviewed before application in Phase 5 (`apply`).
81
+ - **No Unrelated Churn:** Do not reformat unrelated code, reorder imports, or change styles.
82
+ - **Zero Security Bypasses:** Never insert `# nosec`, `verify=False`, `[AllowAnonymous]`, or `csrf().disable()`.
83
+
84
+ ---
85
+
86
+ ## Output Card Format
87
+ ```markdown
88
+ ### 🛠️ TorusGuard Remediation Bundle Formulated
89
+ - **Target Finding:** `[TG-SEC-001]` at `server/index.js:9`
90
+ - **Ponytail Churn:** +1 / -1 (Compliant <= 35 add, <= 25 del)
91
+ - **Strategy:** Migrated hardcoded JWT secret to environment variable process.env.JWT_SECRET
92
+ - **Bundle Directory:** `.torusguard/runs/<run_id>/bundles/bnd-tg-sec-001-9-a8310c/`
93
+ - **Next Step:** Run `npx torusguard apply` or `/torusguard apply` to review and apply
94
+ ```
@@ -1,52 +1,64 @@
1
- ---
2
- name: torusguard-init
3
- description: Initialize TorusGuard workspace — detect project stack, activate tailored TG-* security rules, and generate SECURITY.md baseline.
4
- version: 0.9.2
5
- workflow: .torusguard/workflows/init.md
6
- tools: Read, Grep, Glob, Write
7
- scripts-binding:
8
- - .torusguard/scripts/stack_detect.py
9
- ---
10
-
11
- # TorusGuard Init — Project Stack Discovery & Rule Activation
12
-
13
- ## Objective
14
- Auto-detect repository technology stack via indicators or `stack_detect.py`, activate framework-tailored `TG-*` security rules into `.torusguard/rules/active/`, and provision `torusguard.json` and `SECURITY.md`.
15
-
16
- ---
17
-
18
- ## Pre-Flight Check
19
- 1. Verify `.torusguard/` layout (`config/`, `rules/active/`, `runs/`, `scripts/`, `workflows/`, `templates/`, `schemas/`).
20
- 2. If missing, unpack via `python skills/torusguard/bootstrap.py --target .`.
21
- 3. Check existing `.torusguard/config/torusguard.json` before overwriting.
22
-
23
- ---
24
-
25
- ## Execution Steps
26
-
27
- 1. **Stack Detection:** Run `python .torusguard/scripts/stack_detect.py .` to detect:
28
- - Python: Django (`manage.py`), FastAPI (`fastapi`), Flask (`flask`), SQLAlchemy.
29
- - Node: Next.js (`"next"`), Express (`"express"`), React/Vite (`"vite"`).
30
- - BaaS: Supabase (`@supabase/supabase-js`), Firebase (`firebase-admin`).
31
- 2. **Emit Stack Record:** Log detected language, framework, ORM, and client SDKs.
32
- 3. **Activate Tailored Rules:** Copy matching `TG-*` rules from `.torusguard/rules/` into `.torusguard/rules/active/`.
33
- 4. **Provision Policy:** Create `SECURITY.md` if absent, configuring responsible disclosure contacts.
34
- 5. **Write Configuration:** Persist detected stack and active rules count to `.torusguard/config/torusguard.json`.
35
-
36
- ---
37
-
38
- ## Safety Constraints
39
- - Never overwrite custom rules in `.torusguard/rules/active/` without prompt.
40
- - Retain existing `SECURITY.md` if already established by repository owners.
41
- - Strictly read-only detection against source files.
42
-
43
- ---
44
-
45
- ## Output Format
46
- ```markdown
47
- 🛡️ [TorusGuard] Workspace Initialized
48
- - Primary Stack: <Detected Stack> | Components: <Backend/Frontend/DB>
49
- - Active Rules: <Count> rules enabled in `.torusguard/rules/active/`
50
- - Configuration: `.torusguard/config/torusguard.json` written
51
- Next: Run `/torusguard audit` to execute static security scan.
52
- ```
1
+ ---
2
+ name: torusguard-init
3
+ description: Initialize TorusGuard workspace — detect project stack, activate tailored TG-* security rules, and generate SECURITY.md baseline via CLI or AI Agent.
4
+ version: 1.3.4
5
+ workflow: .torusguard/workflows/init.md
6
+ tools: Read, Grep, Glob, Write, run_command
7
+ scripts-binding:
8
+ - .torusguard/scripts/stack_detect.py
9
+ - .torusguard/scripts/term_ui.py
10
+ ---
11
+
12
+ # TorusGuard Init — Project Stack Discovery & Rule Activation
13
+
14
+ ## Objective
15
+ Auto-detect repository technology stack across 16+ languages and frameworks, provision the `.torusguard/` workspace structure, activate tailored `TG-*` security rules into `.torusguard/rules/active/`, and generate `SECURITY.md` baseline policies.
16
+
17
+ ---
18
+
19
+ ## Two Execution Modes
20
+
21
+ ### Mode A: Automated CLI Execution
22
+ Run the workspace initializer from your terminal:
23
+ ```bash
24
+ # Initialize current repository
25
+ npx torusguard init
26
+
27
+ # Initialize specific directory
28
+ npx torusguard init ./my-app
29
+
30
+ # Force re-initialization (overwriting existing configuration)
31
+ npx torusguard init --force
32
+
33
+ # Explicitly specify stack (e.g. react, nextjs, django, fastapi, express)
34
+ npx torusguard init --stack express
35
+ ```
36
+ **Under the Hood:**
37
+ - Runs `stack_detect.py` to inspect package files (`package.json`, `pyproject.toml`, `requirements.txt`, `go.mod`, `Cargo.toml`, `Gemfile`, `composer.json`, `*.csproj`).
38
+ - Detects backend frameworks, frontend libraries, ORMs (Prisma, Mongoose, SQLAlchemy, Django ORM), and authentication systems.
39
+ - Scaffolds `.torusguard/` directory tree: `config/`, `rules/active/`, `runs/`, `scripts/`, `workflows/`, `templates/`, `schemas/`, `memory/`, `snapshots/`.
40
+ - Copies tailored rule definitions into `.torusguard/rules/active/`.
41
+ - Provisions `SECURITY.md` with standard responsible disclosure contacts.
42
+ - Writes `.torusguard/config/torusguard.json`.
43
+ - Displays 75-column terminal cards.
44
+
45
+ ### Mode B: In-Session AI Chat Agent Initialization
46
+ When initializing a workspace directly in AI chat:
47
+ 1. **Detect Stack:** Inspect root files (`package.json`, `requirements.txt`, etc.) to determine languages and frameworks.
48
+ 2. **Bootstrap Structure:** Ensure `.torusguard/` structure exists. If missing, run `python skills/torusguard/bootstrap.py --target .`.
49
+ 3. **Activate Rules:** Populate `.torusguard/rules/active/` with applicable rule files from `rules/`.
50
+ 4. **Provision Policy:** Create `SECURITY.md` if not already present.
51
+ 5. **Write Configuration:** Persist settings into `.torusguard/config/torusguard.json`.
52
+ 6. **Prompt Audit:** Advise the user to run `npx torusguard audit` or `/torusguard audit`.
53
+
54
+ ---
55
+
56
+ ## Output Card Format
57
+ ```markdown
58
+ ### 🛡️ TorusGuard Workspace Initialized Successfully
59
+ - **Primary Stack:** Node.js / React / Express
60
+ - **Active Rules:** 71 canonical security rules enabled in `.torusguard/rules/active/`
61
+ - **Configuration:** Written to `.torusguard/config/torusguard.json`
62
+ - **Security Policy:** Baseline `SECURITY.md` generated
63
+ - **Next Step:** Run `npx torusguard audit` or `/torusguard audit` to scan for flaws
64
+ ```