torusguard 1.3.4 → 1.3.6

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 (319) hide show
  1. package/.torusguard/.manifest.json +66 -63
  2. package/.torusguard/rules/business-logic/TG-BIZ-001-client-controlled-sensitive-business-value.md +30 -14
  3. package/.torusguard/rules/business-logic/TG-BIZ-002-replayable-one-time-operation.md +33 -16
  4. package/.torusguard/rules/business-logic/TG-BIZ-003-missing-workflow-state-validation.md +31 -15
  5. package/.torusguard/rules/business-logic/TG-BIZ-004-unrestricted-sensitive-business-flow.md +26 -16
  6. package/.torusguard/rules/cache/TG-CACHE-001-sensitive-response-publicly-cacheable.md +24 -16
  7. package/.torusguard/rules/cache/TG-CACHE-002-missing-user-cache-isolation.md +32 -18
  8. package/.torusguard/rules/cache/TG-CACHE-003-sensitive-data-in-url.md +24 -17
  9. package/.torusguard/rules/csrf/TG-CSRF-001-missing-csrf-protection.md +31 -18
  10. package/.torusguard/rules/csrf/TG-CSRF-002-unsafe-credentialed-cross-origin-request.md +28 -17
  11. package/.torusguard/rules/graphql/TG-GQL-002-resolver-missing-authorization.md +33 -17
  12. package/.torusguard/rules/graphql/TG-GQL-003-unbounded-graphql-pagination-or-batching.md +31 -16
  13. package/.torusguard/rules/graphql/TG-GQL-004-unnecessary-production-introspection.md +25 -16
  14. package/.torusguard/rules/secrets/TG-SEC-005-secret-in-git-history.md +24 -19
  15. package/.torusguard/rules/secrets/TG-SEC-006-secret-in-build-artifact.md +36 -19
  16. package/.torusguard/rules/secrets/TG-SEC-007-secret-in-test-or-example-fixture.md +21 -16
  17. package/.torusguard/rules/ssrf/TG-SSRF-002-missing-internal-network-protection.md +45 -18
  18. package/.torusguard/rules/ssrf/TG-SSRF-003-unsafe-redirect-following.md +20 -16
  19. package/.torusguard/rules/ssrf/TG-SSRF-004-unbounded-outbound-request.md +28 -19
  20. package/.torusguard/rules/supply-chain/TG-SUPPLY-001-missing-or-ignored-dependency-lockfile.md +25 -18
  21. package/.torusguard/rules/supply-chain/TG-SUPPLY-003-unsafe-ci-cd-secret-exposure.md +29 -19
  22. package/.torusguard/rules/supply-chain/TG-SUPPLY-004-unpinned-ci-action.md +23 -18
  23. package/.torusguard/rules/supply-chain/TG-SUPPLY-005-unsafe-dependency-install-script.md +23 -18
  24. package/.torusguard/rules/webhook/TG-WEBHOOK-001-missing-webhook-signature-verification.md +36 -16
  25. package/.torusguard/rules/webhook/TG-WEBHOOK-002-replayable-webhook.md +26 -17
  26. package/.torusguard/rules/webhook/TG-WEBHOOK-003-missing-webhook-idempotency.md +30 -16
  27. package/.torusguard/rules/webhook/TG-WEBHOOK-004-unvalidated-webhook-event-type.md +25 -16
  28. package/.torusguard/rules/websocket/TG-WS-002-missing-channel-level-authorization.md +28 -17
  29. package/.torusguard/rules/websocket/TG-WS-003-unvalidated-websocket-message.md +31 -17
  30. package/.torusguard/rules/websocket/TG-WS-004-unbounded-websocket-connections.md +31 -17
  31. package/.torusguard/rules_catalog.json +520 -0
  32. package/.torusguard/runs/report-latest.html +2700 -232
  33. package/.torusguard/runs/results-latest.sarif +20 -0
  34. package/.torusguard/runs/run-20260912-214110-audit/findings.json +1256 -0
  35. package/.torusguard/runs/run-20260912-214110-audit/findings.md +534 -0
  36. package/.torusguard/runs/run-20260912-214110-audit/manifest.json +12 -0
  37. package/.torusguard/runs/run-20260912-214110-audit/summary.md +5 -0
  38. package/.torusguard/runs/run-20260912-214813-audit/findings.json +992 -0
  39. package/.torusguard/runs/run-20260912-214813-audit/findings.md +422 -0
  40. package/.torusguard/runs/run-20260912-214813-audit/manifest.json +12 -0
  41. package/.torusguard/runs/run-20260912-214813-audit/summary.md +5 -0
  42. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-auth-003-49-7c96f3/metadata.json +17 -0
  43. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-auth-003-49-7c96f3/minimal_patch_plan.md +21 -0
  44. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-auth-003-49-7c96f3/patch.diff +9 -0
  45. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-input-003-53-d167b4/metadata.json +17 -0
  46. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-input-003-53-d167b4/minimal_patch_plan.md +21 -0
  47. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-input-003-53-d167b4/patch.diff +9 -0
  48. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-platform-001-12-cf8156/metadata.json +17 -0
  49. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-platform-001-12-cf8156/minimal_patch_plan.md +21 -0
  50. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-platform-001-12-cf8156/patch.diff +9 -0
  51. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-rate-001-26-affcfa/metadata.json +17 -0
  52. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-rate-001-26-affcfa/minimal_patch_plan.md +21 -0
  53. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-rate-001-26-affcfa/patch.diff +9 -0
  54. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-sec-001-9-e22e50/metadata.json +17 -0
  55. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-sec-001-9-e22e50/minimal_patch_plan.md +21 -0
  56. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-sec-001-9-e22e50/patch.diff +9 -0
  57. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-ssrf-004-9-9803ad/metadata.json +17 -0
  58. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-ssrf-004-9-9803ad/minimal_patch_plan.md +21 -0
  59. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-ssrf-004-9-9803ad/patch.diff +9 -0
  60. package/.torusguard/runs/run-20260912-215555-audit/findings.json +530 -0
  61. package/.torusguard/runs/run-20260912-215555-audit/findings.md +232 -0
  62. package/.torusguard/runs/run-20260912-215555-audit/manifest.json +13 -0
  63. package/.torusguard/runs/run-20260912-215555-audit/remediation.md +102 -0
  64. package/.torusguard/runs/run-20260912-215555-audit/summary.md +5 -0
  65. package/.torusguard/runs/run-20260912-215731-audit/apply_plan.md +6 -0
  66. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-client-001-7-587129/metadata.json +17 -0
  67. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-client-001-7-587129/minimal_patch_plan.md +21 -0
  68. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-client-001-7-587129/patch.diff +9 -0
  69. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-db-002-9-5f7850/metadata.json +17 -0
  70. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-db-002-9-5f7850/minimal_patch_plan.md +21 -0
  71. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-db-002-9-5f7850/patch.diff +9 -0
  72. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-input-001-27-2486f1/metadata.json +17 -0
  73. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-input-001-27-2486f1/minimal_patch_plan.md +22 -0
  74. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-input-001-27-2486f1/patch.diff +10 -0
  75. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-input-003-53-d167b4/metadata.json +17 -0
  76. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-input-003-53-d167b4/minimal_patch_plan.md +21 -0
  77. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-input-003-53-d167b4/patch.diff +9 -0
  78. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-platform-001-12-cf8156/metadata.json +17 -0
  79. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-platform-001-12-cf8156/minimal_patch_plan.md +21 -0
  80. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-platform-001-12-cf8156/patch.diff +9 -0
  81. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-platform-002-17-876973/metadata.json +17 -0
  82. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-platform-002-17-876973/minimal_patch_plan.md +23 -0
  83. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-platform-002-17-876973/patch.diff +11 -0
  84. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-platform-002-5-40c794/metadata.json +17 -0
  85. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-platform-002-5-40c794/minimal_patch_plan.md +23 -0
  86. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-platform-002-5-40c794/patch.diff +11 -0
  87. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-rate-001-26-affcfa/metadata.json +17 -0
  88. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-rate-001-26-affcfa/minimal_patch_plan.md +21 -0
  89. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-rate-001-26-affcfa/patch.diff +9 -0
  90. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-rate-002-54-0b38d2/metadata.json +17 -0
  91. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-rate-002-54-0b38d2/minimal_patch_plan.md +21 -0
  92. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-rate-002-54-0b38d2/patch.diff +9 -0
  93. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-001-18-a3c1e8/metadata.json +17 -0
  94. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-001-18-a3c1e8/minimal_patch_plan.md +21 -0
  95. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-001-18-a3c1e8/patch.diff +9 -0
  96. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-001-9-e22e50/metadata.json +17 -0
  97. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-001-9-e22e50/minimal_patch_plan.md +21 -0
  98. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-001-9-e22e50/patch.diff +9 -0
  99. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-004-28-a1a0a1/metadata.json +17 -0
  100. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-004-28-a1a0a1/minimal_patch_plan.md +21 -0
  101. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-004-28-a1a0a1/patch.diff +9 -0
  102. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-004-30-00569e/metadata.json +17 -0
  103. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-004-30-00569e/minimal_patch_plan.md +21 -0
  104. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-004-30-00569e/patch.diff +9 -0
  105. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-ssrf-004-9-9803ad/metadata.json +17 -0
  106. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-ssrf-004-9-9803ad/minimal_patch_plan.md +21 -0
  107. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-ssrf-004-9-9803ad/patch.diff +9 -0
  108. package/.torusguard/runs/run-20260912-215731-audit/diff_summary.md +186 -0
  109. package/.torusguard/runs/run-20260912-215731-audit/findings.json +497 -0
  110. package/.torusguard/runs/run-20260912-215731-audit/findings.md +218 -0
  111. package/.torusguard/runs/run-20260912-215731-audit/manifest.json +14 -0
  112. package/.torusguard/runs/run-20260912-215731-audit/recheck.md +76 -0
  113. package/.torusguard/runs/run-20260912-215731-audit/remediation.md +234 -0
  114. package/.torusguard/runs/run-20260912-215731-audit/summary.md +5 -0
  115. package/.torusguard/runs/run-20260912-220134-audit/findings.json +68 -0
  116. package/.torusguard/runs/run-20260912-220134-audit/findings.md +36 -0
  117. package/.torusguard/runs/run-20260912-220134-audit/manifest.json +12 -0
  118. package/.torusguard/runs/run-20260912-220134-audit/summary.md +5 -0
  119. package/.torusguard/runs/run-20260912-220200-audit/findings.json +1 -0
  120. package/.torusguard/runs/run-20260912-220200-audit/findings.md +8 -0
  121. package/.torusguard/runs/run-20260912-220200-audit/manifest.json +12 -0
  122. package/.torusguard/runs/run-20260912-220200-audit/recheck.md +6 -0
  123. package/.torusguard/runs/run-20260912-220200-audit/summary.md +5 -0
  124. package/.torusguard/runs/run-20260912-220227-audit/findings.json +1 -0
  125. package/.torusguard/runs/run-20260912-220227-audit/findings.md +8 -0
  126. package/.torusguard/runs/run-20260912-220227-audit/manifest.json +12 -0
  127. package/.torusguard/runs/run-20260912-220227-audit/recheck.md +6 -0
  128. package/.torusguard/runs/run-20260912-220227-audit/summary.md +5 -0
  129. package/.torusguard/runs/run-20260918-104221-audit/findings.json +1 -0
  130. package/.torusguard/runs/run-20260918-104221-audit/findings.md +8 -0
  131. package/.torusguard/runs/run-20260918-104221-audit/manifest.json +12 -0
  132. package/.torusguard/runs/run-20260918-104221-audit/summary.md +5 -0
  133. package/.torusguard/runs/run-20260918-104236-audit/findings.json +2314 -0
  134. package/.torusguard/runs/run-20260918-104236-audit/findings.md +960 -0
  135. package/.torusguard/runs/run-20260918-104236-audit/manifest.json +12 -0
  136. package/.torusguard/runs/run-20260918-104236-audit/summary.md +5 -0
  137. package/.torusguard/runs/run-20260918-105723-audit/findings.json +2382 -0
  138. package/.torusguard/runs/run-20260918-105723-audit/findings.md +960 -0
  139. package/.torusguard/runs/run-20260918-105723-audit/manifest.json +12 -0
  140. package/.torusguard/runs/run-20260918-105723-audit/summary.md +5 -0
  141. package/.torusguard/runs/run-20260918-105731-audit/findings.json +1 -0
  142. package/.torusguard/runs/run-20260918-105731-audit/findings.md +8 -0
  143. package/.torusguard/runs/run-20260918-105731-audit/manifest.json +12 -0
  144. package/.torusguard/runs/run-20260918-105731-audit/summary.md +5 -0
  145. package/.torusguard/runs/run-20260918-105940-audit/findings.json +1 -0
  146. package/.torusguard/runs/run-20260918-105940-audit/findings.md +8 -0
  147. package/.torusguard/runs/run-20260918-105940-audit/manifest.json +12 -0
  148. package/.torusguard/runs/run-20260918-105940-audit/summary.md +5 -0
  149. package/.torusguard/scripts/__pycache__/apply_runner.cpython-314.pyc +0 -0
  150. package/.torusguard/scripts/__pycache__/audit_runner.cpython-311.pyc +0 -0
  151. package/.torusguard/scripts/__pycache__/audit_runner.cpython-314.pyc +0 -0
  152. package/.torusguard/scripts/__pycache__/diff_guard.cpython-314.pyc +0 -0
  153. package/.torusguard/scripts/__pycache__/finding_scorer.cpython-311.pyc +0 -0
  154. package/.torusguard/scripts/__pycache__/finding_scorer.cpython-314.pyc +0 -0
  155. package/.torusguard/scripts/__pycache__/harden_runner.cpython-314.pyc +0 -0
  156. package/.torusguard/scripts/__pycache__/html_reporter.cpython-314.pyc +0 -0
  157. package/.torusguard/scripts/__pycache__/manifest_builder.cpython-314.pyc +0 -0
  158. package/.torusguard/scripts/__pycache__/memory_engine.cpython-314.pyc +0 -0
  159. package/.torusguard/scripts/__pycache__/monorepo_detector.cpython-314.pyc +0 -0
  160. package/.torusguard/scripts/__pycache__/recheck_runner.cpython-314.pyc +0 -0
  161. package/.torusguard/scripts/__pycache__/report_sync.cpython-311.pyc +0 -0
  162. package/.torusguard/scripts/__pycache__/report_sync.cpython-314.pyc +0 -0
  163. package/.torusguard/scripts/__pycache__/run_manager.cpython-314.pyc +0 -0
  164. package/.torusguard/scripts/__pycache__/sarif_exporter.cpython-314.pyc +0 -0
  165. package/.torusguard/scripts/__pycache__/stack_detect.cpython-314.pyc +0 -0
  166. package/.torusguard/scripts/__pycache__/term_ui.cpython-311.pyc +0 -0
  167. package/.torusguard/scripts/__pycache__/term_ui.cpython-314.pyc +0 -0
  168. package/.torusguard/scripts/apply_runner.py +389 -377
  169. package/.torusguard/scripts/audit_runner.py +1513 -653
  170. package/.torusguard/scripts/finding_scorer.py +14 -2
  171. package/.torusguard/scripts/harden_runner.py +628 -455
  172. package/.torusguard/scripts/html_reporter.py +2668 -648
  173. package/.torusguard/scripts/recheck_runner.py +248 -238
  174. package/.torusguard/scripts/recipes_runner.py +137 -137
  175. package/.torusguard/scripts/report_sync.py +719 -0
  176. package/.torusguard/scripts/sarif_exporter.py +156 -116
  177. package/.torusguard/scripts/stack_detect.py +44 -2
  178. package/.torusguard/scripts/term_ui.py +162 -162
  179. package/.torusguard/skills/torusguard/SKILL.md +75 -72
  180. package/.torusguard/skills/torusguard-apply/SKILL.md +84 -80
  181. package/.torusguard/skills/torusguard-audit/SKILL.md +87 -83
  182. package/.torusguard/skills/torusguard-authorize/SKILL.md +7 -2
  183. package/.torusguard/skills/torusguard-exploit-check/SKILL.md +7 -2
  184. package/.torusguard/skills/torusguard-full/SKILL.md +7 -2
  185. package/.torusguard/skills/torusguard-harden/SKILL.md +98 -94
  186. package/.torusguard/skills/torusguard-init/SKILL.md +68 -64
  187. package/.torusguard/skills/torusguard-recheck/SKILL.md +81 -77
  188. package/.torusguard/skills/torusguard-report/SKILL.md +93 -72
  189. package/.torusguard/skills/torusguard-status/SKILL.md +62 -58
  190. package/.torusguard/skills/torusguard-verify/SKILL.md +7 -2
  191. package/.torusguard/skills/torusguard-web-validate/SKILL.md +7 -2
  192. package/.torusguard/snapshots/run-20260912-215731-audit/demo/playground/vulnerable_nextjs/actions.ts.bak +24 -0
  193. package/.torusguard/snapshots/run-20260912-215731-audit/examples/hardened-react-express/server/index.js.bak +121 -0
  194. package/.torusguard/snapshots/run-20260912-215731-audit/examples/python/fastapi-vuln/main.py.bak +20 -0
  195. package/.torusguard/snapshots/run-20260912-215731-audit/examples/vulnerable-react-express/client/src/App.jsx.bak +63 -0
  196. package/.torusguard/snapshots/run-20260912-215731-audit/examples/vulnerable-react-express/client/vite.config.js.bak +12 -0
  197. package/.torusguard/snapshots/run-20260912-215731-audit/examples/vulnerable-react-express/server/index.js.bak +82 -0
  198. package/.torusguard/workflows/apply.md +11 -4
  199. package/.torusguard/workflows/audit.md +7 -1
  200. package/.torusguard/workflows/authorize.md +2 -1
  201. package/.torusguard/workflows/exploit-check.md +2 -1
  202. package/.torusguard/workflows/harden.md +7 -1
  203. package/.torusguard/workflows/init.md +6 -1
  204. package/.torusguard/workflows/memory.md +2 -1
  205. package/.torusguard/workflows/recheck.md +7 -1
  206. package/.torusguard/workflows/report.md +7 -1
  207. package/.torusguard/workflows/status.md +6 -1
  208. package/.torusguard/workflows/verify.md +6 -1
  209. package/.torusguard/workflows/web-validate.md +2 -1
  210. package/README.md +476 -345
  211. package/bin/torusguard.js +586 -545
  212. package/package.json +1 -1
  213. package/skills/torusguard/SKILL.md +73 -72
  214. package/skills/torusguard/bootstrap.py +7 -2
  215. package/skills/torusguard/payload/.manifest.json +66 -63
  216. package/skills/torusguard/payload/rules/business-logic/TG-BIZ-001-client-controlled-sensitive-business-value.md +30 -14
  217. package/skills/torusguard/payload/rules/business-logic/TG-BIZ-002-replayable-one-time-operation.md +33 -16
  218. package/skills/torusguard/payload/rules/business-logic/TG-BIZ-003-missing-workflow-state-validation.md +31 -15
  219. package/skills/torusguard/payload/rules/business-logic/TG-BIZ-004-unrestricted-sensitive-business-flow.md +26 -16
  220. package/skills/torusguard/payload/rules/cache/TG-CACHE-001-sensitive-response-publicly-cacheable.md +24 -16
  221. package/skills/torusguard/payload/rules/cache/TG-CACHE-002-missing-user-cache-isolation.md +32 -18
  222. package/skills/torusguard/payload/rules/cache/TG-CACHE-003-sensitive-data-in-url.md +24 -17
  223. package/skills/torusguard/payload/rules/csrf/TG-CSRF-001-missing-csrf-protection.md +31 -18
  224. package/skills/torusguard/payload/rules/csrf/TG-CSRF-002-unsafe-credentialed-cross-origin-request.md +28 -17
  225. package/skills/torusguard/payload/rules/graphql/TG-GQL-002-resolver-missing-authorization.md +33 -17
  226. package/skills/torusguard/payload/rules/graphql/TG-GQL-003-unbounded-graphql-pagination-or-batching.md +31 -16
  227. package/skills/torusguard/payload/rules/graphql/TG-GQL-004-unnecessary-production-introspection.md +25 -16
  228. package/skills/torusguard/payload/rules/secrets/TG-SEC-005-secret-in-git-history.md +24 -19
  229. package/skills/torusguard/payload/rules/secrets/TG-SEC-006-secret-in-build-artifact.md +36 -19
  230. package/skills/torusguard/payload/rules/secrets/TG-SEC-007-secret-in-test-or-example-fixture.md +21 -16
  231. package/skills/torusguard/payload/rules/ssrf/TG-SSRF-002-missing-internal-network-protection.md +45 -18
  232. package/skills/torusguard/payload/rules/ssrf/TG-SSRF-003-unsafe-redirect-following.md +20 -16
  233. package/skills/torusguard/payload/rules/ssrf/TG-SSRF-004-unbounded-outbound-request.md +28 -19
  234. package/skills/torusguard/payload/rules/supply-chain/TG-SUPPLY-001-missing-or-ignored-dependency-lockfile.md +25 -18
  235. package/skills/torusguard/payload/rules/supply-chain/TG-SUPPLY-003-unsafe-ci-cd-secret-exposure.md +29 -19
  236. package/skills/torusguard/payload/rules/supply-chain/TG-SUPPLY-004-unpinned-ci-action.md +23 -18
  237. package/skills/torusguard/payload/rules/supply-chain/TG-SUPPLY-005-unsafe-dependency-install-script.md +23 -18
  238. package/skills/torusguard/payload/rules/webhook/TG-WEBHOOK-001-missing-webhook-signature-verification.md +36 -16
  239. package/skills/torusguard/payload/rules/webhook/TG-WEBHOOK-002-replayable-webhook.md +26 -17
  240. package/skills/torusguard/payload/rules/webhook/TG-WEBHOOK-003-missing-webhook-idempotency.md +30 -16
  241. package/skills/torusguard/payload/rules/webhook/TG-WEBHOOK-004-unvalidated-webhook-event-type.md +25 -16
  242. package/skills/torusguard/payload/rules/websocket/TG-WS-002-missing-channel-level-authorization.md +28 -17
  243. package/skills/torusguard/payload/rules/websocket/TG-WS-003-unvalidated-websocket-message.md +31 -17
  244. package/skills/torusguard/payload/rules/websocket/TG-WS-004-unbounded-websocket-connections.md +31 -17
  245. package/skills/torusguard/payload/rules_catalog.json +520 -0
  246. package/skills/torusguard/payload/scripts/__pycache__/apply_runner.cpython-314.pyc +0 -0
  247. package/skills/torusguard/payload/scripts/__pycache__/audit_runner.cpython-311.pyc +0 -0
  248. package/skills/torusguard/payload/scripts/__pycache__/audit_runner.cpython-314.pyc +0 -0
  249. package/skills/torusguard/payload/scripts/__pycache__/diff_guard.cpython-311.pyc +0 -0
  250. package/skills/torusguard/payload/scripts/__pycache__/diff_guard.cpython-314.pyc +0 -0
  251. package/skills/torusguard/payload/scripts/__pycache__/finding_scorer.cpython-311.pyc +0 -0
  252. package/skills/torusguard/payload/scripts/__pycache__/finding_scorer.cpython-314.pyc +0 -0
  253. package/skills/torusguard/payload/scripts/__pycache__/harden_runner.cpython-314.pyc +0 -0
  254. package/skills/torusguard/payload/scripts/__pycache__/html_reporter.cpython-311.pyc +0 -0
  255. package/skills/torusguard/payload/scripts/__pycache__/html_reporter.cpython-314.pyc +0 -0
  256. package/skills/torusguard/payload/scripts/__pycache__/manifest_builder.cpython-314.pyc +0 -0
  257. package/skills/torusguard/payload/scripts/__pycache__/memory_engine.cpython-311.pyc +0 -0
  258. package/skills/torusguard/payload/scripts/__pycache__/memory_engine.cpython-314.pyc +0 -0
  259. package/skills/torusguard/payload/scripts/__pycache__/monorepo_detector.cpython-311.pyc +0 -0
  260. package/skills/torusguard/payload/scripts/__pycache__/monorepo_detector.cpython-314.pyc +0 -0
  261. package/skills/torusguard/payload/scripts/__pycache__/recheck_runner.cpython-314.pyc +0 -0
  262. package/skills/torusguard/payload/scripts/__pycache__/report_sync.cpython-311.pyc +0 -0
  263. package/skills/torusguard/payload/scripts/__pycache__/report_sync.cpython-314.pyc +0 -0
  264. package/skills/torusguard/payload/scripts/__pycache__/rules_sync.cpython-311.pyc +0 -0
  265. package/skills/torusguard/payload/scripts/__pycache__/run_manager.cpython-311.pyc +0 -0
  266. package/skills/torusguard/payload/scripts/__pycache__/run_manager.cpython-314.pyc +0 -0
  267. package/skills/torusguard/payload/scripts/__pycache__/sarif_exporter.cpython-314.pyc +0 -0
  268. package/skills/torusguard/payload/scripts/__pycache__/stack_detect.cpython-311.pyc +0 -0
  269. package/skills/torusguard/payload/scripts/__pycache__/stack_detect.cpython-314.pyc +0 -0
  270. package/skills/torusguard/payload/scripts/__pycache__/term_ui.cpython-311.pyc +0 -0
  271. package/skills/torusguard/payload/scripts/__pycache__/term_ui.cpython-314.pyc +0 -0
  272. package/skills/torusguard/payload/scripts/apply_runner.py +389 -377
  273. package/skills/torusguard/payload/scripts/audit_runner.py +1513 -653
  274. package/skills/torusguard/payload/scripts/finding_scorer.py +14 -2
  275. package/skills/torusguard/payload/scripts/harden_runner.py +628 -455
  276. package/skills/torusguard/payload/scripts/html_reporter.py +2668 -648
  277. package/skills/torusguard/payload/scripts/recheck_runner.py +248 -238
  278. package/skills/torusguard/payload/scripts/recipes_runner.py +137 -137
  279. package/skills/torusguard/payload/scripts/report_sync.py +719 -0
  280. package/skills/torusguard/payload/scripts/sarif_exporter.py +156 -116
  281. package/skills/torusguard/payload/scripts/stack_detect.py +44 -2
  282. package/skills/torusguard/payload/scripts/term_ui.py +162 -162
  283. package/skills/torusguard/payload/skills/torusguard/SKILL.md +75 -72
  284. package/skills/torusguard/payload/skills/torusguard-apply/SKILL.md +84 -80
  285. package/skills/torusguard/payload/skills/torusguard-audit/SKILL.md +87 -83
  286. package/skills/torusguard/payload/skills/torusguard-authorize/SKILL.md +7 -2
  287. package/skills/torusguard/payload/skills/torusguard-exploit-check/SKILL.md +7 -2
  288. package/skills/torusguard/payload/skills/torusguard-full/SKILL.md +7 -2
  289. package/skills/torusguard/payload/skills/torusguard-harden/SKILL.md +98 -94
  290. package/skills/torusguard/payload/skills/torusguard-init/SKILL.md +68 -64
  291. package/skills/torusguard/payload/skills/torusguard-recheck/SKILL.md +81 -77
  292. package/skills/torusguard/payload/skills/torusguard-report/SKILL.md +93 -72
  293. package/skills/torusguard/payload/skills/torusguard-status/SKILL.md +62 -58
  294. package/skills/torusguard/payload/skills/torusguard-verify/SKILL.md +7 -2
  295. package/skills/torusguard/payload/skills/torusguard-web-validate/SKILL.md +7 -2
  296. package/skills/torusguard/payload/workflows/apply.md +11 -4
  297. package/skills/torusguard/payload/workflows/audit.md +7 -1
  298. package/skills/torusguard/payload/workflows/authorize.md +2 -1
  299. package/skills/torusguard/payload/workflows/exploit-check.md +2 -1
  300. package/skills/torusguard/payload/workflows/harden.md +7 -1
  301. package/skills/torusguard/payload/workflows/init.md +6 -1
  302. package/skills/torusguard/payload/workflows/memory.md +2 -1
  303. package/skills/torusguard/payload/workflows/recheck.md +7 -1
  304. package/skills/torusguard/payload/workflows/report.md +7 -1
  305. package/skills/torusguard/payload/workflows/status.md +6 -1
  306. package/skills/torusguard/payload/workflows/verify.md +6 -1
  307. package/skills/torusguard/payload/workflows/web-validate.md +2 -1
  308. package/skills/torusguard-apply/SKILL.md +84 -80
  309. package/skills/torusguard-audit/SKILL.md +87 -83
  310. package/skills/torusguard-authorize/SKILL.md +7 -2
  311. package/skills/torusguard-exploit-check/SKILL.md +7 -2
  312. package/skills/torusguard-full/SKILL.md +7 -2
  313. package/skills/torusguard-harden/SKILL.md +98 -94
  314. package/skills/torusguard-init/SKILL.md +68 -64
  315. package/skills/torusguard-recheck/SKILL.md +81 -77
  316. package/skills/torusguard-report/SKILL.md +93 -72
  317. package/skills/torusguard-status/SKILL.md +62 -58
  318. package/skills/torusguard-verify/SKILL.md +7 -2
  319. package/skills/torusguard-web-validate/SKILL.md +7 -2
@@ -1,80 +1,84 @@
1
- ---
2
- name: torusguard-apply
3
- description: Apply governed remediation patches to disk with pre-apply rollback snapshots and Human Gate validation via CLI or AI Agent.
4
- version: 1.3.4
5
- workflow: .torusguard/workflows/apply.md
6
- tools: Read, Grep, Glob, Write, replace_file_content, run_command
7
- scripts-binding:
8
- - .torusguard/scripts/apply_runner.py
9
- - .torusguard/scripts/term_ui.py
10
- - .torusguard/scripts/memory_engine.py
11
- ---
12
-
13
- # TorusGuard Apply — Governed Patch Application & Rollback Snapshot
14
-
15
- ## Objective
16
- Safely apply approved remediation bundles to disk source files, creating an automated byte-for-byte pre-apply backup snapshot (`.bak`) in `.torusguard/snapshots/<run_id>/`, asserting syntax validity, and distilling passing patterns into Golden Fix Recipes.
17
-
18
- ---
19
-
20
- ## Two Execution Modes
21
-
22
- ### Mode A: Automated CLI Execution (Interactive or Non-Interactive)
23
- Run the governed patch applier from your terminal:
24
- ```bash
25
- # Interactive Human Gate review (prompts for each patch: [y]es / [n]o / [a]ll / [q]uit)
26
- npx torusguard apply
27
-
28
- # Non-interactive automated application
29
- npx torusguard apply --yes
30
-
31
- # Apply patches from a specific run ID
32
- npx torusguard apply --run run-20260910-121618-audit --yes
33
-
34
- # Emergency rollback from pre-apply snapshot
35
- npx torusguard rollback
36
- # or
37
- npx torusguard apply --rollback
38
- ```
39
- **Under the Hood:** Executes `python .torusguard/scripts/apply_runner.py`.
40
- 1. Reads candidate bundles from `.torusguard/runs/<run_id>/bundles/`.
41
- 2. Creates `.bak` snapshot in `.torusguard/snapshots/<run_id>/<rel_path>.bak`.
42
- 3. Performs line-aware replacement without corrupting concurrent modifications.
43
- 4. Distills the applied fix into a **Golden Fix Recipe** registered in `.torusguard/memory/patterns.json`.
44
- 5. Emits `diff_summary.md` and `apply_plan.md` in the run directory.
45
- 6. Displays pixel-perfect 75-column terminal cards.
46
-
47
- ### Mode B: In-Session AI Chat Agent Application
48
- When applying patches directly within an AI chat session:
49
- 1. **Human Gate Confirmation:** Present the unified diff to the operator and request explicit approval before editing code.
50
- 2. **Pre-Apply Snapshot:** Ensure target file backup is created at `.torusguard/snapshots/<run_id>/<rel_path>.bak`.
51
- 3. **Execute Surgical Edit:** Use `replace_file_content` to apply only the approved lines. Strictly adhere to the formulated Ponytail diff.
52
- 4. **Syntax & Integrity Check:** Verify that the patched file is syntactically valid (e.g. `node --check <file>` or `python -m py_compile <file>`). If syntax fails, immediately restore from `.bak`.
53
- 5. **Memory Registration:** Update persistent memory events in `.torusguard/memory/events.json` with event `fix_applied`.
54
- 6. **Recommend Recheck:** Advise running `/torusguard recheck` or `npx torusguard recheck` to verify closure.
55
-
56
- ---
57
-
58
- ## Rollback Guarantee
59
- If an applied patch introduces unexpected runtime behavior or breaks tests:
60
- ```bash
61
- # Instant one-command rollback of the latest applied run:
62
- npx torusguard rollback
63
-
64
- # Or rollback a specific run:
65
- npx torusguard rollback --run run-20260910-121618-audit
66
- ```
67
- All affected files are restored byte-for-byte from `.torusguard/snapshots/<run_id>/`.
68
-
69
- ---
70
-
71
- ## Output Card Format
72
- ```markdown
73
- ### 🚀 TorusGuard Patch Applied Successfully
74
- - **Target File:** `server/index.js:9`
75
- - **Rule ID:** `TG-SEC-001` (Hardcoded JWT secret)
76
- - **Ponytail Churn:** +1 / -1
77
- - **Rollback Snapshot:** `.torusguard/snapshots/<run_id>/server/index.js.bak`
78
- - **Golden Recipe:** Distilled into persistent memory
79
- - **Next Step:** Run `npx torusguard recheck` or `/torusguard recheck` to verify closure
80
- ```
1
+ ---
2
+ name: torusguard-apply
3
+ description: Apply governed remediation patches to disk with pre-apply rollback snapshots and Human Gate validation via CLI or AI Agent.
4
+ version: 1.3.6
5
+ workflow: .torusguard/workflows/apply.md
6
+ tools: Read, Grep, Glob, Write, replace_file_content, run_command
7
+ scripts-binding:
8
+ - .torusguard/scripts/report_sync.py
9
+ - .torusguard/scripts/apply_runner.py
10
+ - .torusguard/scripts/term_ui.py
11
+ - .torusguard/scripts/memory_engine.py
12
+ ---
13
+
14
+ # TorusGuard Apply — Governed Patch Application & Rollback Snapshot
15
+
16
+ ## Objective
17
+ Safely apply approved remediation bundles to disk source files, creating an automated byte-for-byte pre-apply backup snapshot (`.bak`) in `.torusguard/snapshots/<run_id>/`, asserting syntax validity, and distilling passing patterns into Golden Fix Recipes.
18
+
19
+ ---
20
+
21
+ ## Two Execution Modes
22
+
23
+ ### Mode A: Automated CLI Execution (Interactive or Non-Interactive)
24
+ Run the governed patch applier from your terminal:
25
+ ```bash
26
+ # Interactive Human Gate review (prompts for each patch: [y]es / [n]o / [a]ll / [q]uit)
27
+ npx torusguard apply
28
+
29
+ # Non-interactive automated application
30
+ npx torusguard apply --yes
31
+
32
+ # Apply patches from a specific run ID
33
+ npx torusguard apply --run run-20260910-121618-audit --yes
34
+
35
+ # Emergency rollback from pre-apply snapshot
36
+ npx torusguard rollback
37
+ # or
38
+ npx torusguard apply --rollback
39
+ ```
40
+ **Under the Hood:** Executes `python .torusguard/scripts/apply_runner.py`.
41
+ 1. Reads candidate bundles from `.torusguard/runs/<run_id>/bundles/`.
42
+ 2. Creates `.bak` snapshot in `.torusguard/snapshots/<run_id>/<rel_path>.bak`.
43
+ 3. Performs line-aware replacement without corrupting concurrent modifications.
44
+ 4. Distills the applied fix into a **Golden Fix Recipe** registered in `.torusguard/memory/patterns.json`.
45
+ 5. Emits `diff_summary.md` and `apply_plan.md` in the run directory.
46
+ 6. Displays pixel-perfect 75-column terminal cards.
47
+
48
+ ### Mode B: In-Session AI Chat Agent Application
49
+ When applying patches directly within an AI chat session:
50
+ 1. **Human Gate Confirmation:** Present the unified diff to the operator and request explicit approval before editing code.
51
+ 2. **Pre-Apply Snapshot:** Ensure target file backup is created at `.torusguard/snapshots/<run_id>/<rel_path>.bak`.
52
+ 3. **Execute Surgical Edit:** Use `replace_file_content` to apply only the approved lines. Strictly adhere to the formulated Ponytail diff.
53
+ 4. **Syntax & Integrity Check:** Verify that the patched file is syntactically valid (e.g. `node --check <file>` or `python -m py_compile <file>`). If syntax fails, immediately restore from `.bak`.
54
+ 5. **Memory Registration:** Update persistent memory events in `.torusguard/memory/events.json` with event `fix_applied`.
55
+ 6. **Recommend Recheck:** Advise running `/torusguard recheck` or `npx torusguard recheck` to verify closure.
56
+
57
+ ---
58
+
59
+ ## Rollback Guarantee
60
+ If an applied patch introduces unexpected runtime behavior or breaks tests:
61
+ ```bash
62
+ # Instant one-command rollback of the latest applied run:
63
+ npx torusguard rollback
64
+
65
+ # Or rollback a specific run:
66
+ npx torusguard rollback --run run-20260910-121618-audit
67
+ ```
68
+ All affected files are restored byte-for-byte from `.torusguard/snapshots/<run_id>/`.
69
+
70
+ ---
71
+
72
+ ## Output Card Format
73
+ ```markdown
74
+ ### 🚀 TorusGuard Patch Applied Successfully
75
+ - **Target File:** `server/index.js:9`
76
+ - **Rule ID:** `TG-SEC-001` (Hardcoded JWT secret)
77
+ - **Ponytail Churn:** +1 / -1
78
+ - **Rollback Snapshot:** `.torusguard/snapshots/<run_id>/server/index.js.bak`
79
+ - **Golden Recipe:** Distilled into persistent memory
80
+ - **Next Step:** Run `npx torusguard recheck` or `/torusguard recheck` to verify closure
81
+ ```
82
+
83
+ ## Living Report Ground Truth
84
+ - Read `security_report.md` in the workspace root before taking any action. Update the relevant finding card after completing remediation.
@@ -1,83 +1,87 @@
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
+ ---
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.6
5
+ workflow: .torusguard/workflows/audit.md
6
+ tools: Read, Grep, Glob, Write, run_command
7
+ scripts-binding:
8
+ - .torusguard/scripts/report_sync.py
9
+ - .torusguard/scripts/audit_runner.py
10
+ - .torusguard/scripts/term_ui.py
11
+ - .torusguard/scripts/finding_scorer.py
12
+ ---
13
+
14
+ # TorusGuard Audit — Static Code Security Analysis
15
+
16
+ ## Objective
17
+ Execute static AST analysis across polyglot project files, evaluate code against 74 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.
18
+
19
+ ---
20
+
21
+ ## Two Execution Modes
22
+
23
+ ### Mode A: Automated CLI Execution
24
+ Run the static security audit from your terminal:
25
+ ```bash
26
+ # Scan current repository
27
+ npx torusguard audit
28
+
29
+ # Scan specific directory or example app
30
+ npx torusguard audit ./examples/vulnerable-react-express
31
+
32
+ # Include test fixtures and spec directories
33
+ npx torusguard audit --include-tests
34
+
35
+ # Output machine-readable JSON
36
+ npx torusguard audit --json
37
+ ```
38
+ **Under the Hood:** Executes `python .torusguard/scripts/audit_runner.py`.
39
+ - Auto-detects repository stack and skips build/cache directories (`node_modules`, `.git`, `.venv`, `dist`, `build`).
40
+ - Evaluates files across 18 canonical security families:
41
+ - `TG-SEC-*`: Hardcoded credentials, private keys, JWT secrets, client env leaks.
42
+ - `TG-INPUT-*`: SQL injection, command injection, path traversal, unsafe HTML rendering.
43
+ - `TG-DB-*`: Missing tenant isolation, service role keys in client code.
44
+ - `TG-AUTH-*`: Plaintext passwords, missing cookie security flags (httpOnly, secure, sameSite).
45
+ - `TG-PLATFORM-*`: Permissive wildcard CORS with credentials, missing security headers.
46
+ - `TG-DIFF-*`: Disabled TLS verification (`verify=False`, `rejectUnauthorized: false`).
47
+ - Generates run directory: `.torusguard/runs/run-YYYYMMDD-HHMMSS-audit/`.
48
+ - Writes `findings.json`, `findings.md`, and `manifest.json`.
49
+ - Displays standardized 75-column terminal cards.
50
+ - Returns exit code `1` if findings are discovered, `0` if clean.
51
+
52
+ ### Mode B: In-Session AI Chat Agent Scan
53
+ When auditing files directly in AI chat:
54
+ 1. **Discover Sinks:** Use `grep_search` and `view_file` to search for dangerous patterns across server and client code.
55
+ 2. **Cluster Root Causes:** Group findings by causal architecture (e.g. `cluster-tenant-isolation`, `cluster-credentials-exposure`, `cluster-injection`).
56
+ 3. **Audit Evidence Sufficiency:** Ensure that user-controlled input reaches the vulnerable sink without prior sanitization or schema validation.
57
+ 4. **Present Actionable Findings:** Display finding cards with severity, rule ID, file, line, and remediation recommendation.
58
+ 5. **Prompt Next Phase:** Guide the operator to `/torusguard harden` or `npx torusguard harden`.
59
+
60
+ ---
61
+
62
+ ## Canonical Rule Families
63
+ | Family | Scope | Example Violations |
64
+ | :--- | :--- | :--- |
65
+ | **TG-SEC** | Secrets & Credentials | Hardcoded JWT secret, API key strings, token logging |
66
+ | **TG-INPUT** | Injection & Input Validation | Raw SQL interpolation, DOM `innerHTML`, `path.join` traversal |
67
+ | **TG-DB** | Database & Tenant Scoping | Unscoped `.objects.get(id=...)`, Prisma missing `tenantId` |
68
+ | **TG-AUTH** | Authentication & Cookies | Insecure cookies (missing httpOnly/secure/sameSite) |
69
+ | **TG-PLATFORM** | Server & Platform Config | Wildcard CORS (`origin: '*'`) with credentials |
70
+ | **TG-DIFF** | Security Bypasses | Disabled TLS verification (`verify=False`) |
71
+
72
+ ---
73
+
74
+ ## Output Card Format
75
+ ```markdown
76
+ ### 🛡️ TorusGuard Static Security Audit Completed
77
+ - **Run ID:** `run-20260910-121618-audit`
78
+ - **Scope:** 7 files evaluated across 11 canonical families
79
+ - **Status:** ✖ CRITICAL FINDINGS DETECTED
80
+ - **Findings:** 2 Critical, 2 High, 2 Medium/Low (6 total)
81
+ - **Clusters:** 3 architectural root causes identified
82
+ - **Artifacts:** `.torusguard/runs/<run_id>/findings.json`
83
+ - **Next Action:** Run `npx torusguard harden` or `/torusguard harden`
84
+ ```
85
+
86
+ ## Living Report Ground Truth
87
+ - Read `security_report.md` in the workspace root before taking any action. Update the relevant finding card after completing remediation.
@@ -1,10 +1,11 @@
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: 1.3.4
4
+ version: 1.3.6
5
5
  workflow: .torusguard/workflows/authorize.md
6
- tools: Read, Grep, Glob, Write
6
+ tools: Read, Grep, Glob, Write, run_command
7
7
  scripts-binding:
8
+ - .torusguard/scripts/report_sync.py
8
9
  - .torusguard/scripts/safety_gate.py
9
10
  ---
10
11
 
@@ -30,6 +31,10 @@ Define and validate legal runtime authorization boundaries, verify target owners
30
31
 
31
32
  ---
32
33
 
34
+ ## Living Report Ground Truth
35
+ - Always inspect `security_report.md` at workspace root before acting.
36
+ - Update finding statuses after completion to eliminate hallucination.
37
+
33
38
  ## Safety Constraints
34
39
  - Never authorize wildcard hosts (`*`) or third-party domains.
35
40
  - State-changing destructive actions (`DELETE`, bulk drops) are disabled by default.
@@ -1,10 +1,11 @@
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: 1.3.4
4
+ version: 1.3.6
5
5
  workflow: .torusguard/workflows/exploit-check.md
6
- tools: Read, Grep, Glob, Bash, Write
6
+ tools: Read, Grep, Glob, Bash, Write, run_command
7
7
  scripts-binding:
8
+ - .torusguard/scripts/report_sync.py
8
9
  - .torusguard/scripts/safety_gate.py
9
10
  - .torusguard/scripts/finding_scorer.py
10
11
  ---
@@ -48,6 +49,10 @@ Before dispatching any exploitability probe:
48
49
 
49
50
  ---
50
51
 
52
+ ## Living Report Ground Truth
53
+ - Always inspect `security_report.md` at workspace root before acting.
54
+ - Update finding statuses after completion to eliminate hallucination.
55
+
51
56
  ## Safety Constraints
52
57
  - Zero destructive payloads (`DROP`, `DELETE`, `UPDATE`).
53
58
  - No denial-of-service or continuous fuzzing loops.
@@ -1,10 +1,11 @@
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: 1.3.4
4
+ version: 1.3.6
5
5
  workflow: .torusguard/workflows/audit.md
6
- tools: Read, Grep, Glob, Bash, Edit, Write
6
+ tools: Read, Grep, Glob, Bash, Edit, Write, run_command
7
7
  scripts-binding:
8
+ - .torusguard/scripts/report_sync.py
8
9
  - .torusguard/scripts/stack_detect.py
9
10
  - .torusguard/scripts/safety_gate.py
10
11
  - .torusguard/scripts/finding_scorer.py
@@ -53,6 +54,10 @@ Evaluates Evidence (35 pts), Reproduction (25 pts), Corroboration (15 pts), Envi
53
54
 
54
55
  ---
55
56
 
57
+ ## Living Report Ground Truth
58
+ - Always inspect `security_report.md` at workspace root before acting.
59
+ - Update finding statuses after completion to eliminate hallucination.
60
+
56
61
  ## Safety & Governance
57
62
  - Human Gate mandatory before code modifications in Phase 5.
58
63
  - Enforce Ponytail line bounds ($\le 35$ additions, $\le 25$ deletions).
@@ -1,94 +1,98 @@
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
+ ---
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.6
5
+ workflow: .torusguard/workflows/harden.md
6
+ tools: Read, Grep, Glob, Write, run_command
7
+ scripts-binding:
8
+ - .torusguard/scripts/report_sync.py
9
+ - .torusguard/scripts/harden_runner.py
10
+ - .torusguard/scripts/diff_guard.py
11
+ - .torusguard/scripts/term_ui.py
12
+ ---
13
+
14
+ # TorusGuard Harden — Governed Remediation & Bundle Packaging
15
+
16
+ ## Objective
17
+ 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.
18
+
19
+ ---
20
+
21
+ ## Two Execution Modes
22
+
23
+ ### Mode A: Automated CLI Execution (Recommended First Step)
24
+ Run the autonomous remediation engine via the terminal:
25
+ ```bash
26
+ # Harden latest audit run
27
+ npx torusguard harden
28
+
29
+ # Harden specific project directory
30
+ npx torusguard harden ./my-project
31
+
32
+ # Harden specific run ID
33
+ npx torusguard harden --run run-20260910-121618-audit
34
+
35
+ # Machine-readable JSON output
36
+ npx torusguard harden --json
37
+ ```
38
+ **Under the Hood:** Executes `python .torusguard/scripts/harden_runner.py`.
39
+ - Discovers findings in `.torusguard/runs/<run_id>/findings.json`.
40
+ - Matches findings against canonical AST patch templates (`TG-SEC-*`, `TG-INPUT-*`, `TG-DB-*`, `TG-PLATFORM-*`, `TG-AUTH-*`, `TG-DIFF-*`).
41
+ - Validates that every candidate patch strictly satisfies Ponytail bounds ($\le 35$ additions, $\le 25$ deletions).
42
+ - Packages candidate bundles into `.torusguard/runs/<run_id>/bundles/<bundle_id>/` containing `patch.diff`, `minimal_patch_plan.md`, and `metadata.json`.
43
+ - Emits run-level summary `remediation.md`.
44
+ - Renders pixel-perfect 75-column terminal cards.
45
+
46
+ ### Mode B: In-Session AI Chat Agent Remediation
47
+ When findings require complex architectural changes, or when the automated CLI cannot formulate a template match:
48
+ 1. **Locate Target Finding:** Inspect `.torusguard/runs/<run_id>/findings.md` or `findings.json`.
49
+ 2. **Inspect AST Context:** Read surrounding lines ($\pm 15$) of the vulnerable sink using `view_file`.
50
+ 3. **Formulate Minimal Fix:** Craft a surgical code modification:
51
+ - Parameterize SQL queries (replace concatenation with `?` or `$1` or `%s`).
52
+ - Add tenant isolation (`where: { tenantId }`, `organization_id=...`).
53
+ - Replace unsafe HTML injection (`dangerouslySetInnerHTML`, `.innerHTML = ...`) with safe text rendering (`textContent`, React elements).
54
+ - Sanitize path traversal using `path.basename()` or `os.path.basename()`.
55
+ - Constrain wildcard CORS headers to verified origin environment variables.
56
+ - Restore TLS verification flags (`verify=True`, `rejectUnauthorized: true`).
57
+ 4. **Validate Ponytail Bounds:** Count additions ($\le 35$) and deletions ($\le 25$). Never perform full-file rewrites.
58
+ 5. **Package Bundle Artifacts:** Write bundle under `.torusguard/runs/<run_id>/bundles/<bundle_id>/`:
59
+ - `patch.diff`: Standard unified diff.
60
+ - `minimal_patch_plan.md`: Context, rationale, and diff preview.
61
+ - `metadata.json`: Bundle metadata.
62
+ 6. **Report to Operator:** Present proposed diff card and recommend running `/torusguard apply` or `npx torusguard apply`.
63
+
64
+ ---
65
+
66
+ ## Remediation Bundle Structure
67
+ ```
68
+ .torusguard/runs/<run_id>/
69
+ ├── remediation.md # Run-level catalog of formulated candidate patches
70
+ └── bundles/
71
+ └── bnd-<rule_id>-<line>-<hash>/
72
+ ├── patch.diff # Unified diff preview
73
+ ├── minimal_patch_plan.md # Detailed explanation, rationale, and churn stats
74
+ └── metadata.json # Machine-readable bundle metadata
75
+ ```
76
+
77
+ ---
78
+
79
+ ## Non-Negotiable Invariants
80
+ - **Ponytail Limit:** Strict upper bound of $\le 35$ additions and $\le 25$ deletions per bundle.
81
+ - **Dry-Run Rule:** Never modify target source code during `harden`. All edits must be reviewed before application in Phase 5 (`apply`).
82
+ - **No Unrelated Churn:** Do not reformat unrelated code, reorder imports, or change styles.
83
+ - **Zero Security Bypasses:** Never insert `# nosec`, `verify=False`, `[AllowAnonymous]`, or `csrf().disable()`.
84
+
85
+ ---
86
+
87
+ ## Output Card Format
88
+ ```markdown
89
+ ### 🛠️ TorusGuard Remediation Bundle Formulated
90
+ - **Target Finding:** `[TG-SEC-001]` at `server/index.js:9`
91
+ - **Ponytail Churn:** +1 / -1 (Compliant <= 35 add, <= 25 del)
92
+ - **Strategy:** Migrated hardcoded JWT secret to environment variable process.env.JWT_SECRET
93
+ - **Bundle Directory:** `.torusguard/runs/<run_id>/bundles/bnd-tg-sec-001-9-a8310c/`
94
+ - **Next Step:** Run `npx torusguard apply` or `/torusguard apply` to review and apply
95
+ ```
96
+
97
+ ## Living Report Ground Truth
98
+ - Read `security_report.md` in the workspace root before taking any action. Update the relevant finding card after completing remediation.