@aegis-scan/skills 0.5.0 → 0.5.2

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 (345) hide show
  1. package/ATTRIBUTION.md +93 -0
  2. package/package.json +1 -1
  3. package/sbom.cdx.json +1 -0
  4. package/skills/compliance/aegis-native/brutaler-anwalt/.claude-plugin/plugin.json +108 -0
  5. package/skills/compliance/aegis-native/brutaler-anwalt/CHANGELOG.md +878 -0
  6. package/skills/compliance/aegis-native/brutaler-anwalt/README.md +9 -3
  7. package/skills/compliance/aegis-native/brutaler-anwalt/SKILL.md +93 -14
  8. package/skills/compliance/aegis-native/brutaler-anwalt/commands/audit.md +193 -0
  9. package/skills/compliance/aegis-native/brutaler-anwalt/commands/avv-redline.md +246 -0
  10. package/skills/compliance/aegis-native/brutaler-anwalt/commands/az-verify.md +155 -0
  11. package/skills/compliance/aegis-native/brutaler-anwalt/commands/cold-start.md +157 -0
  12. package/skills/compliance/aegis-native/brutaler-anwalt/commands/dsar-respond.md +180 -0
  13. package/skills/compliance/aegis-native/brutaler-anwalt/commands/health.md +50 -0
  14. package/skills/compliance/aegis-native/brutaler-anwalt/commands/simulate.md +158 -0
  15. package/skills/compliance/aegis-native/brutaler-anwalt/hooks/post_write.py +315 -0
  16. package/skills/compliance/aegis-native/brutaler-anwalt/hooks/prompt_submit.py +144 -0
  17. package/skills/compliance/aegis-native/brutaler-anwalt/hooks/session_start.py +57 -0
  18. package/skills/compliance/aegis-native/brutaler-anwalt/hooks/triggers.json +191 -0
  19. package/skills/compliance/aegis-native/brutaler-anwalt/references/INDEX.md +102 -0
  20. package/skills/compliance/aegis-native/brutaler-anwalt/references/abmahn-templates.md +1 -1
  21. package/skills/compliance/aegis-native/brutaler-anwalt/references/aegis-integration.md +60 -5
  22. package/skills/compliance/aegis-native/brutaler-anwalt/references/audit-patterns.md +745 -11
  23. package/skills/compliance/aegis-native/brutaler-anwalt/references/az-auffuellung-batch1.md +468 -0
  24. package/skills/compliance/aegis-native/brutaler-anwalt/references/bgh-urteile.md +106 -30
  25. package/skills/compliance/aegis-native/brutaler-anwalt/references/branchenrecht.md +247 -2
  26. package/skills/compliance/aegis-native/brutaler-anwalt/references/checklisten.md +75 -2
  27. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-aufsichtsbehoerden-taetigkeitsberichte-2024.md +310 -0
  28. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-bussgeld-argumentations-layer.md +598 -0
  29. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-dsk-beschluesse.md +346 -0
  30. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AGG/audit-relevance.md +76 -0
  31. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AGG/paragraphs.md +115 -0
  32. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AMG/audit-relevance.md +58 -0
  33. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AMG/paragraphs.md +95 -0
  34. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ArbZG/audit-relevance.md +60 -0
  35. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ArbZG/paragraphs.md +90 -0
  36. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/BetrVG/audit-relevance.md +73 -0
  37. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/BetrVG/paragraphs.md +114 -0
  38. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DDG/audit-relevance.md +72 -0
  39. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DDG/paragraphs.md +103 -0
  40. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DiGAV/audit-relevance.md +65 -0
  41. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DiGAV/paragraphs.md +102 -0
  42. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ElektroG/audit-relevance.md +66 -0
  43. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ElektroG/paragraphs.md +108 -0
  44. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/FernUSG/audit-relevance.md +80 -0
  45. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/FernUSG/paragraphs.md +102 -0
  46. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GeschGehG/audit-relevance.md +89 -0
  47. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GeschGehG/paragraphs.md +107 -0
  48. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GwG/audit-relevance.md +62 -0
  49. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GwG/paragraphs.md +119 -0
  50. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HWG/audit-relevance.md +70 -0
  51. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HWG/paragraphs.md +125 -0
  52. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HinSchG/audit-relevance.md +70 -0
  53. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HinSchG/paragraphs.md +116 -0
  54. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/INDEX.md +152 -0
  55. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/KWG/audit-relevance.md +64 -0
  56. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/KWG/paragraphs.md +110 -0
  57. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/LFGB/audit-relevance.md +63 -0
  58. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/LFGB/paragraphs.md +90 -0
  59. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/MPDG/audit-relevance.md +61 -0
  60. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/MPDG/paragraphs.md +96 -0
  61. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/NachwG/audit-relevance.md +54 -0
  62. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/NachwG/paragraphs.md +82 -0
  63. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/PAngV/audit-relevance.md +76 -0
  64. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/PAngV/paragraphs.md +86 -0
  65. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/RDG/audit-relevance.md +84 -0
  66. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/RDG/paragraphs.md +114 -0
  67. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/TDDDG/audit-relevance.md +92 -0
  68. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/TDDDG/paragraphs.md +91 -0
  69. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/UrhG-UrhDaG/audit-relevance.md +85 -0
  70. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/UrhG-UrhDaG/paragraphs.md +166 -0
  71. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VDuG/audit-relevance.md +71 -0
  72. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VDuG/paragraphs.md +102 -0
  73. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VERIFICATION-NOTES.md +111 -0
  74. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VVG/audit-relevance.md +65 -0
  75. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VVG/paragraphs.md +101 -0
  76. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VerpackG/audit-relevance.md +62 -0
  77. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VerpackG/paragraphs.md +120 -0
  78. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/WpHG/audit-relevance.md +64 -0
  79. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/WpHG/paragraphs.md +120 -0
  80. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ZAG/audit-relevance.md +68 -0
  81. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ZAG/paragraphs.md +110 -0
  82. package/skills/compliance/aegis-native/brutaler-anwalt/references/dsgvo.md +55 -8
  83. package/skills/compliance/aegis-native/brutaler-anwalt/references/eu-edpb-guidelines.md +505 -0
  84. package/skills/compliance/aegis-native/brutaler-anwalt/references/eu-eugh-dsgvo-schadensersatz.md +223 -0
  85. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BDSG/audit-relevance.md +31 -0
  86. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BFSG/audit-relevance.md +39 -0
  87. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BGB/audit-relevance.md +42 -0
  88. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/DDG/audit-relevance.md +28 -0
  89. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/DSGVO/audit-relevance.md +35 -0
  90. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/articles.md +4 -1
  91. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/audit-relevance.md +139 -0
  92. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/gpai-pflichten.md +102 -0
  93. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/hochrisiko-annex-iii.md +134 -0
  94. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/sanktionen-art-99.md +97 -0
  95. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/transparenz-art-50.md +120 -0
  96. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/uebergangsfristen.md +109 -0
  97. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CER-2022-2557/articles.md +42 -0
  98. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CRA-2024-2847/articles.md +87 -0
  99. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CSDDD-2024-1760/articles.md +43 -0
  100. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CSRD-2022-2464/articles.md +42 -0
  101. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DGA-2022-868/articles.md +53 -0
  102. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DMA-2022-1925/articles.md +55 -0
  103. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DORA-2022-2554/articles.md +164 -0
  104. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DORA-2022-2554/audit-relevance.md +86 -0
  105. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/articles.md +3 -0
  106. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/audit-relevance.md +110 -0
  107. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/notice-and-action.md +138 -0
  108. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/small-platform-pflichten.md +109 -0
  109. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/trusted-flaggers.md +77 -0
  110. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/vlop-vlose.md +130 -0
  111. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/Data-Act-2023-2854/articles.md +102 -0
  112. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/Data-Act-2023-2854/audit-relevance.md +77 -0
  113. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/MiCA-2023-1114/articles.md +124 -0
  114. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/MiCA-2023-1114/audit-relevance.md +85 -0
  115. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/NIS2-2022-2555/articles.md +101 -0
  116. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/ProdHaftRL-2024-2853/articles.md +68 -0
  117. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/eIDAS-2024-1183/articles.md +43 -0
  118. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/Finance/KWG.md +52 -0
  119. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/Finance/PSD2.md +67 -0
  120. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/Finance/ZAG.md +50 -0
  121. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/GlueStV/articles.md +86 -0
  122. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/HGB-AO/audit-relevance.md +27 -0
  123. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/HinSchG/articles.md +96 -0
  124. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/JuSchG-JMStV/articles.md +86 -0
  125. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/KritisDachG/articles.md +39 -0
  126. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/LkSG/articles.md +90 -0
  127. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/MedTech/DiGAV.md +60 -0
  128. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/MedTech/IVDR-2017-746.md +51 -0
  129. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/MedTech/MDR-2017-745.md +85 -0
  130. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/NIS2UmsuCG-BSIG/articles.md +53 -0
  131. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/StGB/relevante-paragraphen.md +157 -0
  132. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/TDDDG/audit-relevance.md +33 -0
  133. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/TDDDG/paragraphs.md +3 -2
  134. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/TKG/articles.md +73 -0
  135. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/UWG/audit-relevance.md +39 -0
  136. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/UWG/paragraphs.md +71 -3
  137. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/VERIFICATION-STATUS.md +266 -0
  138. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/VSBG/audit-relevance.md +37 -0
  139. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/ePrivacy-RL-2002-58/articles.md +92 -0
  140. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/ePrivacy-RL-2002-58/audit-relevance.md +62 -0
  141. package/skills/compliance/aegis-native/brutaler-anwalt/references/it-recht.md +115 -9
  142. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/INDEX.md +1 -1
  143. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/ai/anthropic-dpa.md +87 -0
  144. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/astro/cookie-banner-pattern.md +202 -0
  145. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/astro/dse-section-pattern.md +198 -0
  146. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/astro/tracking-server-endpoint.md +193 -0
  147. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/auth/auth0-tom.md +92 -0
  148. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/auth/clerk-tom.md +84 -0
  149. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/django/auth-cookies-pattern.md +295 -0
  150. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/django/cookie-banner-pattern.md +318 -0
  151. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/django/gdpr-cleanup-celery.md +339 -0
  152. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/express/cookie-banner-pattern.md +237 -0
  153. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/express/gdpr-routes-pattern.md +256 -0
  154. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/express/helmet-csp-pattern.md +207 -0
  155. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/agb-versioning-pattern.md +305 -0
  156. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/cookie-banner-pattern.md +287 -0
  157. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/gdpr-models-pattern.md +290 -0
  158. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/tracking-config-pattern.md +263 -0
  159. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/auth-pattern.md +265 -0
  160. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/cookie-banner-pattern.md +255 -0
  161. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/gdpr-cleanup-cron.md +244 -0
  162. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/tracking-interceptor.md +239 -0
  163. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/api-route-bearer-auth.md +103 -0
  164. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/dynamic-rendering-headers.md +83 -0
  165. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/env-driven-tracking.md +135 -0
  166. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/rails/cookie-banner-pattern.md +294 -0
  167. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/rails/devise-dsgvo-pattern.md +262 -0
  168. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/rails/gdpr-anonymization-pattern.md +283 -0
  169. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/react/consent-gate-pattern.md +99 -0
  170. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/react/cookie-banner-pattern.md +204 -0
  171. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/strapi/cms-pii-pattern.md +301 -0
  172. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/strapi/notice-and-action-plugin.md +371 -0
  173. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/svelte/cookie-banner-pattern.md +234 -0
  174. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/svelte/dse-section-pattern.md +231 -0
  175. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/svelte/sveltekit-server-hooks-pattern.md +217 -0
  176. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/tracking/google-analytics-consent.md +129 -0
  177. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/tracking/posthog-consent.md +79 -0
  178. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/cookie-banner-pattern.md +208 -0
  179. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/dse-i18n-pattern.md +204 -0
  180. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/nuxt-vs-vue-only-pattern.md +197 -0
  181. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/tracking-pinia-pattern.md +211 -0
  182. package/skills/compliance/aegis-native/brutaler-anwalt/references/strafrecht-steuer.md +1 -1
  183. package/skills/compliance/aegis-native/brutaler-anwalt/references/streitwerte.json +176 -0
  184. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/DSFA-template.md +80 -0
  185. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/VVT-template-file-upload.md +98 -0
  186. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-EN-international.md +267 -0
  187. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-Audit-Klausel-Varianten.md +148 -0
  188. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-CH-revDSG.md +127 -0
  189. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-SCC-module2-controller-processor.md +180 -0
  190. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-SCC-module3-processor-subprocessor.md +144 -0
  191. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-Sub-Processor-List.md +114 -0
  192. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-TOMs.md +197 -0
  193. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-UK-IDTA.md +131 -0
  194. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-standard-DE.md +288 -0
  195. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/Joint-Controller-Vertrag-Art-26.md +265 -0
  196. package/skills/compliance/aegis-native/brutaler-anwalt/scripts/health-check.sh +190 -48
  197. package/skills/compliance/aegis-native/brutaler-anwalt/scripts/test-triggers.sh +145 -0
  198. package/skills/compliance/aegis-native/brutaler-anwalt/settings.json +90 -0
  199. package/skills/defensive/permoon-fork/README.md +40 -0
  200. package/skills/defensive/permoon-fork/multi-model-consolidation/SKILL.md +47 -0
  201. package/skills/defensive/permoon-fork/multi-model-severity/SKILL.md +34 -0
  202. package/skills/defensive/permoon-fork/multi-model-system-prompt/SKILL.md +40 -0
  203. package/skills/foundation/aegis-native/aegis-handover-writer/SKILL.md +1 -1
  204. package/skills/foundation/aegis-native/aegis-quality-gates/SKILL.md +1 -1
  205. package/skills/offensive/airecon-fork/ctf-crypto/SKILL.md +260 -0
  206. package/skills/offensive/airecon-fork/ctf-crypto-modern-ciphers/SKILL.md +688 -0
  207. package/skills/offensive/airecon-fork/ctf-forensics/SKILL.md +253 -0
  208. package/skills/offensive/airecon-fork/ctf-forensics-network/SKILL.md +480 -0
  209. package/skills/offensive/airecon-fork/ctf-heap-advanced/SKILL.md +336 -0
  210. package/skills/offensive/airecon-fork/ctf-pwn/SKILL.md +294 -0
  211. package/skills/offensive/airecon-fork/ctf-pwn-rop-and-shellcode/SKILL.md +392 -0
  212. package/skills/offensive/airecon-fork/ctf-reversing/SKILL.md +284 -0
  213. package/skills/offensive/airecon-fork/frameworks-django/SKILL.md +268 -0
  214. package/skills/offensive/airecon-fork/frameworks-dotnet/SKILL.md +280 -0
  215. package/skills/offensive/airecon-fork/frameworks-express/SKILL.md +266 -0
  216. package/skills/offensive/airecon-fork/frameworks-fastapi/SKILL.md +193 -0
  217. package/skills/offensive/airecon-fork/frameworks-flask/SKILL.md +297 -0
  218. package/skills/offensive/airecon-fork/frameworks-laravel/SKILL.md +260 -0
  219. package/skills/offensive/airecon-fork/frameworks-nextjs/SKILL.md +230 -0
  220. package/skills/offensive/airecon-fork/frameworks-php/SKILL.md +271 -0
  221. package/skills/offensive/airecon-fork/frameworks-rails/SKILL.md +269 -0
  222. package/skills/offensive/airecon-fork/frameworks-spring/SKILL.md +245 -0
  223. package/skills/offensive/airecon-fork/frameworks-wordpress/SKILL.md +348 -0
  224. package/skills/offensive/airecon-fork/payloads-command-injection/SKILL.md +459 -0
  225. package/skills/offensive/airecon-fork/payloads-http-parameter-pollution/SKILL.md +129 -0
  226. package/skills/offensive/airecon-fork/payloads-ldap-injection/SKILL.md +100 -0
  227. package/skills/offensive/airecon-fork/payloads-lfi/SKILL.md +485 -0
  228. package/skills/offensive/airecon-fork/payloads-sqli/SKILL.md +419 -0
  229. package/skills/offensive/airecon-fork/payloads-ssrf/SKILL.md +125 -0
  230. package/skills/offensive/airecon-fork/payloads-ssti/SKILL.md +443 -0
  231. package/skills/offensive/airecon-fork/payloads-xss/SKILL.md +447 -0
  232. package/skills/offensive/airecon-fork/payloads-xxe/SKILL.md +172 -0
  233. package/skills/offensive/airecon-fork/postexploit-ad-credential-attacks/SKILL.md +306 -0
  234. package/skills/offensive/airecon-fork/postexploit-container-escape/SKILL.md +299 -0
  235. package/skills/offensive/airecon-fork/postexploit-credential-dumping/SKILL.md +249 -0
  236. package/skills/offensive/airecon-fork/postexploit-lateral-movement/SKILL.md +194 -0
  237. package/skills/offensive/airecon-fork/postexploit-linux-privesc/SKILL.md +252 -0
  238. package/skills/offensive/airecon-fork/postexploit-netexec-workflow/SKILL.md +302 -0
  239. package/skills/offensive/airecon-fork/postexploit-pivoting/SKILL.md +205 -0
  240. package/skills/offensive/airecon-fork/postexploit-windows-privesc/SKILL.md +210 -0
  241. package/skills/offensive/airecon-fork/protocols-active-directory/SKILL.md +314 -0
  242. package/skills/offensive/airecon-fork/protocols-dns/SKILL.md +203 -0
  243. package/skills/offensive/airecon-fork/protocols-ftp/SKILL.md +159 -0
  244. package/skills/offensive/airecon-fork/protocols-graphql/SKILL.md +648 -0
  245. package/skills/offensive/airecon-fork/protocols-kerberos/SKILL.md +168 -0
  246. package/skills/offensive/airecon-fork/protocols-ldap/SKILL.md +245 -0
  247. package/skills/offensive/airecon-fork/protocols-rdp/SKILL.md +186 -0
  248. package/skills/offensive/airecon-fork/protocols-smb/SKILL.md +191 -0
  249. package/skills/offensive/airecon-fork/protocols-smtp-imap/SKILL.md +263 -0
  250. package/skills/offensive/airecon-fork/protocols-snmp/SKILL.md +147 -0
  251. package/skills/offensive/airecon-fork/protocols-ssh/SKILL.md +287 -0
  252. package/skills/offensive/airecon-fork/reconnaissance-asn-whois-osint/SKILL.md +236 -0
  253. package/skills/offensive/airecon-fork/reconnaissance-ctf-methodology/SKILL.md +435 -0
  254. package/skills/offensive/airecon-fork/reconnaissance-dorking/SKILL.md +182 -0
  255. package/skills/offensive/airecon-fork/reconnaissance-exposed-devtools-detection/SKILL.md +513 -0
  256. package/skills/offensive/airecon-fork/reconnaissance-full-recon/SKILL.md +305 -0
  257. package/skills/offensive/airecon-fork/reconnaissance-internal-pentest/SKILL.md +202 -0
  258. package/skills/offensive/airecon-fork/reconnaissance-javascript-analysis/SKILL.md +167 -0
  259. package/skills/offensive/airecon-fork/reconnaissance-js-internal-hostname-intelligence/SKILL.md +391 -0
  260. package/skills/offensive/airecon-fork/reconnaissance-monitoring-secrets-exposure/SKILL.md +394 -0
  261. package/skills/offensive/airecon-fork/reconnaissance-shodan-censys/SKILL.md +279 -0
  262. package/skills/offensive/airecon-fork/reconnaissance-subdomain-enum/SKILL.md +952 -0
  263. package/skills/offensive/airecon-fork/technologies-cicd-attacks/SKILL.md +283 -0
  264. package/skills/offensive/airecon-fork/technologies-cloud-security/SKILL.md +299 -0
  265. package/skills/offensive/airecon-fork/technologies-docker-container/SKILL.md +266 -0
  266. package/skills/offensive/airecon-fork/technologies-elasticsearch/SKILL.md +226 -0
  267. package/skills/offensive/airecon-fork/technologies-firebase-firestore/SKILL.md +213 -0
  268. package/skills/offensive/airecon-fork/technologies-frida-hooking/SKILL.md +387 -0
  269. package/skills/offensive/airecon-fork/technologies-gitlab-github/SKILL.md +259 -0
  270. package/skills/offensive/airecon-fork/technologies-jenkins/SKILL.md +256 -0
  271. package/skills/offensive/airecon-fork/technologies-kubernetes-pentest/SKILL.md +281 -0
  272. package/skills/offensive/airecon-fork/technologies-memcached/SKILL.md +230 -0
  273. package/skills/offensive/airecon-fork/technologies-mobile-app-pentesting/SKILL.md +105 -0
  274. package/skills/offensive/airecon-fork/technologies-mongodb/SKILL.md +257 -0
  275. package/skills/offensive/airecon-fork/technologies-nginx-apache/SKILL.md +280 -0
  276. package/skills/offensive/airecon-fork/technologies-observability-stack-attacks/SKILL.md +501 -0
  277. package/skills/offensive/airecon-fork/technologies-redis/SKILL.md +236 -0
  278. package/skills/offensive/airecon-fork/technologies-supabase/SKILL.md +270 -0
  279. package/skills/offensive/airecon-fork/technologies-tomcat/SKILL.md +232 -0
  280. package/skills/offensive/airecon-fork/tools-advanced-fuzzing/SKILL.md +351 -0
  281. package/skills/offensive/airecon-fork/tools-browser-automation/SKILL.md +300 -0
  282. package/skills/offensive/airecon-fork/tools-caido/SKILL.md +776 -0
  283. package/skills/offensive/airecon-fork/tools-code-review/SKILL.md +71 -0
  284. package/skills/offensive/airecon-fork/tools-dalfox/SKILL.md +189 -0
  285. package/skills/offensive/airecon-fork/tools-hashcat-john/SKILL.md +258 -0
  286. package/skills/offensive/airecon-fork/tools-impacket/SKILL.md +227 -0
  287. package/skills/offensive/airecon-fork/tools-install/SKILL.md +202 -0
  288. package/skills/offensive/airecon-fork/tools-metasploit/SKILL.md +270 -0
  289. package/skills/offensive/airecon-fork/tools-nmap/SKILL.md +211 -0
  290. package/skills/offensive/airecon-fork/tools-nuclei/SKILL.md +175 -0
  291. package/skills/offensive/airecon-fork/tools-reporting/SKILL.md +47 -0
  292. package/skills/offensive/airecon-fork/tools-scripting/SKILL.md +1939 -0
  293. package/skills/offensive/airecon-fork/tools-semgrep/SKILL.md +202 -0
  294. package/skills/offensive/airecon-fork/tools-source-audit/SKILL.md +308 -0
  295. package/skills/offensive/airecon-fork/tools-sqlmap/SKILL.md +137 -0
  296. package/skills/offensive/airecon-fork/tools-tool-catalog/SKILL.md +320 -0
  297. package/skills/offensive/airecon-fork/tools-wapiti/SKILL.md +293 -0
  298. package/skills/offensive/airecon-fork/vulnerabilities-2fa-bypass/SKILL.md +219 -0
  299. package/skills/offensive/airecon-fork/vulnerabilities-account-takeover/SKILL.md +223 -0
  300. package/skills/offensive/airecon-fork/vulnerabilities-api-schema-exposure/SKILL.md +849 -0
  301. package/skills/offensive/airecon-fork/vulnerabilities-api-testing/SKILL.md +278 -0
  302. package/skills/offensive/airecon-fork/vulnerabilities-auth-workflow/SKILL.md +252 -0
  303. package/skills/offensive/airecon-fork/vulnerabilities-authentication-jwt/SKILL.md +158 -0
  304. package/skills/offensive/airecon-fork/vulnerabilities-bfla/SKILL.md +156 -0
  305. package/skills/offensive/airecon-fork/vulnerabilities-blind-xss/SKILL.md +111 -0
  306. package/skills/offensive/airecon-fork/vulnerabilities-business-logic/SKILL.md +313 -0
  307. package/skills/offensive/airecon-fork/vulnerabilities-cors/SKILL.md +242 -0
  308. package/skills/offensive/airecon-fork/vulnerabilities-crlf-injection/SKILL.md +146 -0
  309. package/skills/offensive/airecon-fork/vulnerabilities-csrf/SKILL.md +200 -0
  310. package/skills/offensive/airecon-fork/vulnerabilities-csrf-advanced-bypass/SKILL.md +536 -0
  311. package/skills/offensive/airecon-fork/vulnerabilities-deserialization/SKILL.md +363 -0
  312. package/skills/offensive/airecon-fork/vulnerabilities-dom-based-vulnerabilities/SKILL.md +105 -0
  313. package/skills/offensive/airecon-fork/vulnerabilities-exploitation/SKILL.md +286 -0
  314. package/skills/offensive/airecon-fork/vulnerabilities-grpc/SKILL.md +123 -0
  315. package/skills/offensive/airecon-fork/vulnerabilities-host-header-injection/SKILL.md +169 -0
  316. package/skills/offensive/airecon-fork/vulnerabilities-http-smuggling/SKILL.md +411 -0
  317. package/skills/offensive/airecon-fork/vulnerabilities-idor/SKILL.md +705 -0
  318. package/skills/offensive/airecon-fork/vulnerabilities-information-disclosure/SKILL.md +867 -0
  319. package/skills/offensive/airecon-fork/vulnerabilities-insecure-file-uploads/SKILL.md +190 -0
  320. package/skills/offensive/airecon-fork/vulnerabilities-jwt-attacks/SKILL.md +270 -0
  321. package/skills/offensive/airecon-fork/vulnerabilities-kubernetes/SKILL.md +252 -0
  322. package/skills/offensive/airecon-fork/vulnerabilities-mass-assignment/SKILL.md +788 -0
  323. package/skills/offensive/airecon-fork/vulnerabilities-nosql-injection/SKILL.md +204 -0
  324. package/skills/offensive/airecon-fork/vulnerabilities-oauth-misconfig/SKILL.md +220 -0
  325. package/skills/offensive/airecon-fork/vulnerabilities-oauth-saml/SKILL.md +163 -0
  326. package/skills/offensive/airecon-fork/vulnerabilities-open-redirect/SKILL.md +167 -0
  327. package/skills/offensive/airecon-fork/vulnerabilities-password-reset-poisoning/SKILL.md +66 -0
  328. package/skills/offensive/airecon-fork/vulnerabilities-path-traversal/SKILL.md +192 -0
  329. package/skills/offensive/airecon-fork/vulnerabilities-privilege-escalation/SKILL.md +320 -0
  330. package/skills/offensive/airecon-fork/vulnerabilities-prototype-pollution/SKILL.md +242 -0
  331. package/skills/offensive/airecon-fork/vulnerabilities-race-conditions/SKILL.md +192 -0
  332. package/skills/offensive/airecon-fork/vulnerabilities-rce/SKILL.md +240 -0
  333. package/skills/offensive/airecon-fork/vulnerabilities-sensitive-file-pii-exposure/SKILL.md +589 -0
  334. package/skills/offensive/airecon-fork/vulnerabilities-spring4shell/SKILL.md +86 -0
  335. package/skills/offensive/airecon-fork/vulnerabilities-sql-injection/SKILL.md +313 -0
  336. package/skills/offensive/airecon-fork/vulnerabilities-ssrf/SKILL.md +183 -0
  337. package/skills/offensive/airecon-fork/vulnerabilities-ssti/SKILL.md +344 -0
  338. package/skills/offensive/airecon-fork/vulnerabilities-subdomain-takeover/SKILL.md +160 -0
  339. package/skills/offensive/airecon-fork/vulnerabilities-supply-chain/SKILL.md +125 -0
  340. package/skills/offensive/airecon-fork/vulnerabilities-unhandled-exception-differential/SKILL.md +742 -0
  341. package/skills/offensive/airecon-fork/vulnerabilities-waf-detection/SKILL.md +90 -0
  342. package/skills/offensive/airecon-fork/vulnerabilities-web-cache-poisoning/SKILL.md +233 -0
  343. package/skills/offensive/airecon-fork/vulnerabilities-websocket/SKILL.md +180 -0
  344. package/skills/offensive/airecon-fork/vulnerabilities-xss/SKILL.md +316 -0
  345. package/skills/offensive/airecon-fork/vulnerabilities-xxe/SKILL.md +222 -0
@@ -0,0 +1,776 @@
1
+ <!-- aegis-local: forked 2026-05-04 from pikpikcu/airecon@9a21453459d87eefb012ea355c79b593d0d3c0cc (MIT-licensed); attribution preserved, see ATTRIBUTION.md -->
2
+
3
+ # Caido CLI — Complete GraphQL API Guide for AIRecon
4
+
5
+ Caido is a web proxy tool (similar to Burp Suite) controlled entirely via a GraphQL API.
6
+ In the AIRecon sandbox it runs on port **48080** and is managed by `caido-setup`.
7
+
8
+ Schema source: https://graphql-explorer.caido.io/ (200 operations: 77 queries + 123 mutations)
9
+
10
+ ---
11
+
12
+ ## STARTUP — Always Run First
13
+
14
+ ```bash
15
+ caido-setup
16
+ ```
17
+
18
+ Output on success:
19
+ ```
20
+ ✅ Caido Web Proxy successfully booted!
21
+ 📡 Management UI: http://127.0.0.1:48080
22
+ 🔑 Access Token: eyJ...
23
+ ```
24
+
25
+ Save the token:
26
+ ```bash
27
+ TOKEN="eyJ..." # copy from caido-setup output
28
+ ```
29
+
30
+ If already running, re-fetch token:
31
+ ```bash
32
+ TOKEN=$(curl -sL -X POST \
33
+ -H "Content-Type: application/json" \
34
+ -d '{"query":"mutation { loginAsGuest { token { accessToken } } }"}' \
35
+ http://127.0.0.1:48080/graphql | jq -r '.data.loginAsGuest.token.accessToken')
36
+ echo "TOKEN=$TOKEN"
37
+ ```
38
+
39
+ ---
40
+
41
+ ## GraphQL Endpoint — Standard curl Wrapper
42
+
43
+ ```bash
44
+ # Replace QUERY with any query/mutation string below
45
+ curl -sL -X POST \
46
+ -H "Content-Type: application/json" \
47
+ -H "Authorization: Bearer $TOKEN" \
48
+ -d '{"query":"QUERY"}' \
49
+ http://127.0.0.1:48080/graphql | jq .
50
+ ```
51
+
52
+ For mutations with variables:
53
+ ```bash
54
+ curl -sL -X POST \
55
+ -H "Content-Type: application/json" \
56
+ -H "Authorization: Bearer $TOKEN" \
57
+ -d '{"query":"mutation NAME($var: Type!) { op(input: $var) { ... } }", "variables": {"var": {...}}}' \
58
+ http://127.0.0.1:48080/graphql | jq .
59
+ ```
60
+
61
+ ---
62
+
63
+ ## Using Caido as HTTP Proxy (Capture Traffic)
64
+
65
+ All traffic routed through port 48080 is logged to the active project.
66
+
67
+ ```bash
68
+ # curl through Caido proxy (use -k to accept Caido's CA cert)
69
+ curl -x http://127.0.0.1:48080 -k https://target.com/api/endpoint
70
+
71
+ # Set proxy environment variables for tools that respect them
72
+ export http_proxy=http://127.0.0.1:48080
73
+ export https_proxy=http://127.0.0.1:48080
74
+ export HTTPS_PROXY=http://127.0.0.1:48080
75
+ export HTTP_PROXY=http://127.0.0.1:48080
76
+
77
+ # Python httpx
78
+ import httpx
79
+ client = httpx.Client(
80
+ proxies={"http://": "http://127.0.0.1:48080", "https://": "http://127.0.0.1:48080"},
81
+ verify=False
82
+ )
83
+
84
+ # Python requests
85
+ import requests
86
+ session = requests.Session()
87
+ session.proxies = {"http": "http://127.0.0.1:48080", "https": "http://127.0.0.1:48080"}
88
+ session.verify = False
89
+ ```
90
+
91
+ ---
92
+
93
+ ## HTTP History — Query Captured Requests
94
+
95
+ ### List recent requests (paginated)
96
+ ```bash
97
+ curl -sL -X POST \
98
+ -H "Content-Type: application/json" \
99
+ -H "Authorization: Bearer $TOKEN" \
100
+ -d '{"query":"query { requests(first: 50) { edges { node { id method host path port isTls response { statusCode length roundtripTime } createdAt } } pageInfo { hasNextPage endCursor } } }"}' \
101
+ http://127.0.0.1:48080/graphql | jq '.data.requests.edges[].node'
102
+ ```
103
+
104
+ ### Filter requests using HTTPQL
105
+ HTTPQL is Caido's filter language. Operators: `eq`, `like`, `gt`, `lt`, `preset`.
106
+
107
+ ```bash
108
+ # By host
109
+ FILTER='host.eq:"target.com"'
110
+
111
+ # By HTTP method
112
+ FILTER='method.eq:"POST"'
113
+
114
+ # By path pattern
115
+ FILTER='path.cont:"/api/"'
116
+
117
+ # By response status code
118
+ FILTER='resp.code.eq:200'
119
+
120
+ # By response length
121
+ FILTER='resp.length.gt:1000'
122
+
123
+ # Combine filters (AND)
124
+ FILTER='host.eq:"target.com" and method.eq:"POST"'
125
+
126
+ # Combine filters (OR)
127
+ FILTER='resp.code.eq:401 or resp.code.eq:403'
128
+
129
+ curl -sL -X POST \
130
+ -H "Content-Type: application/json" \
131
+ -H "Authorization: Bearer $TOKEN" \
132
+ -d "{\"query\":\"query { requests(first:100, filter: {httpql: \\\"$FILTER\\\"}) { edges { node { id method host path response { statusCode } } } } }\"}" \
133
+ http://127.0.0.1:48080/graphql | jq '.data.requests.edges[].node'
134
+ ```
135
+
136
+ ### Get raw request + response by ID
137
+ ```bash
138
+ REQUEST_ID="abc123"
139
+ curl -sL -X POST \
140
+ -H "Content-Type: application/json" \
141
+ -H "Authorization: Bearer $TOKEN" \
142
+ -d "{\"query\":\"query { request(id: \\\"$REQUEST_ID\\\") { id method host path port isTls raw response { statusCode length raw roundtripTime } } }\"}" \
143
+ http://127.0.0.1:48080/graphql | jq '.data.request'
144
+ ```
145
+
146
+ Note: `raw` field is base64-encoded. Decode with:
147
+ ```bash
148
+ ... | jq -r '.data.request.raw' | base64 -d
149
+ ```
150
+
151
+ ### Query requests with offset pagination (for large sets)
152
+ ```bash
153
+ # count returns { value, snapshot } — use count { value } not count directly
154
+ curl -sL -X POST \
155
+ -H "Content-Type: application/json" \
156
+ -H "Authorization: Bearer $TOKEN" \
157
+ -d '{"query":"query { requestsByOffset(limit: 100, offset: 0, filter: {httpql: \"host.eq:target.com\"}) { edges { node { id method path response { statusCode length } } } count { value } } }"}' \
158
+ http://127.0.0.1:48080/graphql | jq '.data.requestsByOffset'
159
+ ```
160
+
161
+ ---
162
+
163
+ ## Intercept — Pause and Modify Traffic in Real Time
164
+
165
+ ### Check intercept status
166
+ ```bash
167
+ # interceptStatus is a scalar enum (RUNNING | PAUSED) — no subfields
168
+ curl -sL -X POST \
169
+ -H "Content-Type: application/json" \
170
+ -H "Authorization: Bearer $TOKEN" \
171
+ -d '{"query":"query { interceptStatus interceptOptions { request { enabled } response { enabled } } }"}' \
172
+ http://127.0.0.1:48080/graphql | jq '.data'
173
+ ```
174
+
175
+ ### Enable intercept (resume capturing)
176
+ ```bash
177
+ # pauseIntercept / resumeIntercept return { status } — status is a scalar enum
178
+ curl -sL -X POST \
179
+ -H "Content-Type: application/json" \
180
+ -H "Authorization: Bearer $TOKEN" \
181
+ -d '{"query":"mutation { resumeIntercept { status } }"}' \
182
+ http://127.0.0.1:48080/graphql | jq '.data.resumeIntercept'
183
+ ```
184
+
185
+ ### Configure intercept options (which traffic to intercept)
186
+ ```bash
187
+ curl -sL -X POST \
188
+ -H "Content-Type: application/json" \
189
+ -H "Authorization: Bearer $TOKEN" \
190
+ -d '{
191
+ "query": "mutation SetOpts($input: InterceptOptionsInput!) { setInterceptOptions(input: $input) { options { request { enabled } response { enabled } } } }",
192
+ "variables": {
193
+ "input": {
194
+ "request": {"enabled": true},
195
+ "response": {"enabled": false},
196
+ "streamWs": {"enabled": false}
197
+ }
198
+ }
199
+ }' \
200
+ http://127.0.0.1:48080/graphql | jq '.data.setInterceptOptions'
201
+ ```
202
+
203
+ ### List pending intercepted messages
204
+ ```bash
205
+ # interceptMessages requires kind argument: REQUEST | RESPONSE | STREAM_WS
206
+ curl -sL -X POST \
207
+ -H "Content-Type: application/json" \
208
+ -H "Authorization: Bearer $TOKEN" \
209
+ -d '{"query":"query { interceptMessages(first: 10, kind: REQUEST) { edges { node { id ... on InterceptRequestMessage { request { id method host path } } } } } }"}' \
210
+ http://127.0.0.1:48080/graphql | jq '.data.interceptMessages'
211
+ ```
212
+
213
+ ### Forward an intercepted message (let it pass through)
214
+ ```bash
215
+ MSG_ID="msg123"
216
+ # Use inline fragments for union return type
217
+ curl -sL -X POST \
218
+ -H "Content-Type: application/json" \
219
+ -H "Authorization: Bearer $TOKEN" \
220
+ -d "{
221
+ \"query\": \"mutation ForwardMsg(\$id: ID!, \$input: ForwardInterceptMessageInput!) { forwardInterceptMessage(id: \$id, input: \$input) { ... on ForwardInterceptMessageSuccess { deletedId } ... on Error { code message } } }\",
222
+ \"variables\": {\"id\": \"$MSG_ID\", \"input\": {}}
223
+ }" \
224
+ http://127.0.0.1:48080/graphql | jq '.data.forwardInterceptMessage'
225
+ ```
226
+
227
+ ### Forward with modified request (edit before forwarding)
228
+ ```bash
229
+ MSG_ID="msg123"
230
+ # Encode modified raw HTTP request
231
+ MODIFIED_RAW=$(printf 'GET /api/admin HTTP/1.1\r\nHost: target.com\r\nAuthorization: Bearer INJECTED\r\n\r\n' | base64 -w0)
232
+ curl -sL -X POST \
233
+ -H "Content-Type: application/json" \
234
+ -H "Authorization: Bearer $TOKEN" \
235
+ -d "{
236
+ \"query\": \"mutation ForwardMsg(\$id: ID!, \$input: ForwardInterceptMessageInput!) { forwardInterceptMessage(id: \$id, input: \$input) { ... on ForwardInterceptMessageSuccess { deletedId } ... on Error { code message } } }\",
237
+ \"variables\": {\"id\": \"$MSG_ID\", \"input\": {\"request\": {\"updateRaw\": \"$MODIFIED_RAW\", \"updateContentLength\": true}}}
238
+ }" \
239
+ http://127.0.0.1:48080/graphql | jq '.data.forwardInterceptMessage'
240
+ ```
241
+
242
+ ### Drop an intercepted message (block it)
243
+ ```bash
244
+ MSG_ID="msg123"
245
+ curl -sL -X POST \
246
+ -H "Content-Type: application/json" \
247
+ -H "Authorization: Bearer $TOKEN" \
248
+ -d "{
249
+ \"query\": \"mutation DropMsg(\$id: ID!) { dropInterceptMessage(id: \$id) { ... on DropInterceptMessageSuccess { deletedId } ... on Error { code message } } }\",
250
+ \"variables\": {\"id\": \"$MSG_ID\"}
251
+ }" \
252
+ http://127.0.0.1:48080/graphql | jq '.data.dropInterceptMessage'
253
+ ```
254
+
255
+ ### Pause intercept (stop capturing)
256
+ ```bash
257
+ curl -sL -X POST \
258
+ -H "Content-Type: application/json" \
259
+ -H "Authorization: Bearer $TOKEN" \
260
+ -d '{"query":"mutation { pauseIntercept { status } }"}' \
261
+ http://127.0.0.1:48080/graphql | jq '.data.pauseIntercept'
262
+ ```
263
+
264
+ ---
265
+
266
+ ## Replay — Send Modified Requests
267
+
268
+ Replay sends a single raw HTTP request to a target. Two steps: create session → start replay task.
269
+
270
+ ### Step 1 — Create a Replay Session (from existing request ID)
271
+ ```bash
272
+ REQUEST_ID="abc123"
273
+ curl -sL -X POST \
274
+ -H "Content-Type: application/json" \
275
+ -H "Authorization: Bearer $TOKEN" \
276
+ -d "{
277
+ \"query\": \"mutation { createReplaySession(input: { requestSource: { id: \\\"$REQUEST_ID\\\" } }) { session { id name } } }\"
278
+ }" \
279
+ http://127.0.0.1:48080/graphql | jq '.data.createReplaySession.session'
280
+ # Save: SESSION_ID="..."
281
+ ```
282
+
283
+ ### Step 2 — Start Replay Task (send the request)
284
+ The `raw` field is the full HTTP request as a base64-encoded string.
285
+
286
+ ```bash
287
+ # Encode the raw request
288
+ RAW_REQUEST=$(printf 'GET /api/v1/admin HTTP/1.1\r\nHost: target.com\r\nAuthorization: Bearer STOLEN_TOKEN\r\nUser-Agent: Mozilla/5.0\r\n\r\n' | base64 -w0)
289
+
290
+ SESSION_ID="session123"
291
+ curl -sL -X POST \
292
+ -H "Content-Type: application/json" \
293
+ -H "Authorization: Bearer $TOKEN" \
294
+ -d "{
295
+ \"query\": \"mutation StartReplay(\$sessionId: ID!, \$input: StartReplayTaskInput!) { startReplayTask(sessionId: \$sessionId, input: \$input) { task { id } } }\",
296
+ \"variables\": {
297
+ \"sessionId\": \"$SESSION_ID\",
298
+ \"input\": {
299
+ \"connection\": {
300
+ \"host\": \"target.com\",
301
+ \"port\": 443,
302
+ \"isTLS\": true
303
+ },
304
+ \"raw\": \"$RAW_REQUEST\",
305
+ \"settings\": {
306
+ \"connectionClose\": false,
307
+ \"updateContentLength\": true,
308
+ \"placeholders\": []
309
+ }
310
+ }
311
+ }
312
+ }" \
313
+ http://127.0.0.1:48080/graphql | jq '.data.startReplayTask'
314
+ ```
315
+
316
+ ### List all Replay Sessions
317
+ ```bash
318
+ # ReplayEntry does not have a response field directly — use request { response }
319
+ curl -sL -X POST \
320
+ -H "Content-Type: application/json" \
321
+ -H "Authorization: Bearer $TOKEN" \
322
+ -d '{"query":"query { replaySessions(first: 20) { edges { node { id name activeEntry { id request { id method host path response { statusCode length } } } } } } }"}' \
323
+ http://127.0.0.1:48080/graphql | jq '.data.replaySessions.edges[].node'
324
+ ```
325
+
326
+ ### Get Replay Session with all entries
327
+ ```bash
328
+ SESSION_ID="session123"
329
+ curl -sL -X POST \
330
+ -H "Content-Type: application/json" \
331
+ -H "Authorization: Bearer $TOKEN" \
332
+ -d "{\"query\":\"query { replaySession(id: \\\"$SESSION_ID\\\") { id name entries { edges { node { id request { raw } response { statusCode raw } } } } } }\"}" \
333
+ http://127.0.0.1:48080/graphql | jq '.data.replaySession'
334
+ ```
335
+
336
+ ---
337
+
338
+ ## Automate — Fuzzing / Intruder
339
+
340
+ Automate injects payloads at byte-offset positions in a raw HTTP request.
341
+ Three steps: create session → update with raw request + settings → start task.
342
+
343
+ ### Step 1 — Create Automate Session
344
+ ```bash
345
+ curl -sL -X POST \
346
+ -H "Content-Type: application/json" \
347
+ -H "Authorization: Bearer $TOKEN" \
348
+ -d '{"query":"mutation { createAutomateSession(input: {}) { session { id name } } }"}' \
349
+ http://127.0.0.1:48080/graphql | jq '.data.createAutomateSession.session'
350
+ # Save: AUTO_SESSION_ID="..."
351
+ ```
352
+
353
+ ### Step 2 — Configure Session (raw request + payload settings)
354
+
355
+ Placeholders are byte offsets `{start, end}` in the raw request where payloads are injected.
356
+ Find offsets: encode the request, then calculate the byte position of the value to fuzz.
357
+
358
+ ```python
359
+ # Helper: find placeholder offsets for a value in a raw HTTP request
360
+ raw = b"POST /login HTTP/1.1\r\nHost: target.com\r\nContent-Type: application/json\r\n\r\n{\"password\":\"FUZZ\"}"
361
+ start = raw.index(b"FUZZ")
362
+ end = start + len(b"FUZZ")
363
+ # start=87, end=91 — use these as placeholder {start: 87, end: 91}
364
+ import base64
365
+ print(base64.b64encode(raw).decode())
366
+ ```
367
+
368
+ ```bash
369
+ # Encode raw request
370
+ RAW=$(printf 'POST /login HTTP/1.1\r\nHost: target.com\r\nContent-Type: application/json\r\n\r\n{"username":"admin","password":"FUZZ"}' | base64 -w0)
371
+ # Byte offsets: FUZZ is at position 94 (length 4) → start:94, end:98
372
+
373
+ AUTO_SESSION_ID="auto123"
374
+ curl -sL -X POST \
375
+ -H "Content-Type: application/json" \
376
+ -H "Authorization: Bearer $TOKEN" \
377
+ -d "{
378
+ \"query\": \"mutation Update(\$id: ID!, \$input: UpdateAutomateSessionInput!) { updateAutomateSession(id: \$id, input: \$input) { session { id } } }\",
379
+ \"variables\": {
380
+ \"id\": \"$AUTO_SESSION_ID\",
381
+ \"input\": {
382
+ \"connection\": {
383
+ \"host\": \"target.com\",
384
+ \"port\": 443,
385
+ \"isTLS\": true
386
+ },
387
+ \"raw\": \"$RAW\",
388
+ \"settings\": {
389
+ \"closeConnection\": false,
390
+ \"updateContentLength\": true,
391
+ \"strategy\": \"SEQUENTIAL\",
392
+ \"concurrency\": {\"workers\": 10, \"delay\": 0},
393
+ \"redirect\": {\"max\": 3, \"strategy\": \"ALWAYS\"},
394
+ \"retryOnFailure\": {\"maximumRetries\": 0, \"backoff\": 1000},
395
+ \"placeholders\": [{\"start\": 94, \"end\": 98}],
396
+ \"payloads\": [
397
+ {
398
+ \"preprocessors\": [],
399
+ \"options\": {
400
+ \"simpleList\": {
401
+ \"list\": [\"password\",\"123456\",\"admin\",\"letmein\",\"Password1\",\"qwerty\"]
402
+ }
403
+ }
404
+ }
405
+ ]
406
+ }
407
+ }
408
+ }
409
+ }" \
410
+ http://127.0.0.1:48080/graphql | jq '.data.updateAutomateSession'
411
+ ```
412
+
413
+ ### Payload Types
414
+
415
+ ```
416
+ simpleList — list of strings: {"simpleList": {"list": ["val1","val2","val3"]}}
417
+ number — numeric range: {"number": {"range": {"min":1,"max":100}, "increments":1, "minLength":1}}
418
+ hostedFile — file by ID: {"hostedFile": {"id": "file_id", "delimiter": "\n"}}
419
+ null — no value (N qty): {"null": {"quantity": 5}}
420
+ ```
421
+
422
+ ### Payload Strategies
423
+ ```
424
+ SEQUENTIAL — one payload at a time per placeholder (like Burp Sniper)
425
+ PARALLEL — same index across all placeholders simultaneously (like Burp Pitchfork)
426
+ MATRIX — all combinations (like Burp Cluster Bomb)
427
+ ALL — all payloads to all positions
428
+ ```
429
+
430
+ ### Payload Preprocessors (optional transforms)
431
+ ```json
432
+ {"preprocessors": [
433
+ {"options": {"urlEncode": {"charset": null, "percentEncode": false}}},
434
+ {"options": {"prefix": {"value": "' OR "}}},
435
+ {"options": {"suffix": {"value": "--"}}}
436
+ ]}
437
+ ```
438
+
439
+ ### Step 3 — Start Automate Task
440
+ ```bash
441
+ curl -sL -X POST \
442
+ -H "Content-Type: application/json" \
443
+ -H "Authorization: Bearer $TOKEN" \
444
+ -d "{\"query\":\"mutation { startAutomateTask(automateSessionId: \\\"$AUTO_SESSION_ID\\\") { automateTask { id paused } } }\"}" \
445
+ http://127.0.0.1:48080/graphql | jq '.data.startAutomateTask'
446
+ # Save: TASK_ID="..."
447
+ ```
448
+
449
+ ### Monitor Task Status
450
+ ```bash
451
+ TASK_ID="task123"
452
+ curl -sL -X POST \
453
+ -H "Content-Type: application/json" \
454
+ -H "Authorization: Bearer $TOKEN" \
455
+ -d '{"query":"query { automateTasks(first:20) { edges { node { id paused entries { count } } } } }"}' \
456
+ http://127.0.0.1:48080/graphql | jq '.data.automateTasks.edges[].node'
457
+ ```
458
+
459
+ ### Pause / Resume / Cancel Automate Task
460
+ ```bash
461
+ # Pause
462
+ curl -sL -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $TOKEN" \
463
+ -d "{\"query\":\"mutation { pauseAutomateTask(id: \\\"$TASK_ID\\\") { automateTask { id paused } } }\"}" \
464
+ http://127.0.0.1:48080/graphql | jq '.data.pauseAutomateTask'
465
+
466
+ # Resume
467
+ curl -sL -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $TOKEN" \
468
+ -d "{\"query\":\"mutation { resumeAutomateTask(id: \\\"$TASK_ID\\\") { automateTask { id paused } } }\"}" \
469
+ http://127.0.0.1:48080/graphql | jq '.data.resumeAutomateTask'
470
+
471
+ # Cancel
472
+ curl -sL -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $TOKEN" \
473
+ -d "{\"query\":\"mutation { cancelAutomateTask(id: \\\"$TASK_ID\\\") { cancelledId } }\"}" \
474
+ http://127.0.0.1:48080/graphql | jq '.data.cancelAutomateTask'
475
+ ```
476
+
477
+ ### View Automate Results (Entries)
478
+ ```bash
479
+ AUTO_SESSION_ID="auto123"
480
+ curl -sL -X POST \
481
+ -H "Content-Type: application/json" \
482
+ -H "Authorization: Bearer $TOKEN" \
483
+ -d "{\"query\":\"query { automateSession(id: \\\"$AUTO_SESSION_ID\\\") { entries(first: 100) { edges { node { id error request { id } } } } } }\"}" \
484
+ http://127.0.0.1:48080/graphql | jq '.data.automateSession.entries.edges[].node'
485
+ ```
486
+
487
+ ---
488
+
489
+ ## Findings — Vulnerability Notes
490
+
491
+ ### Create a Finding (attach to a request)
492
+ ```bash
493
+ REQUEST_ID="req123"
494
+ curl -sL -X POST \
495
+ -H "Content-Type: application/json" \
496
+ -H "Authorization: Bearer $TOKEN" \
497
+ -d "{
498
+ \"query\": \"mutation { createFinding(requestId: \\\"$REQUEST_ID\\\", input: { title: \\\"IDOR - User ID Enumeration\\\", reporter: \\\"airecon\\\", description: \\\"GET /api/user?id=X leaks other users data without authorization\\\" }) { finding { id title } } }\"
499
+ }" \
500
+ http://127.0.0.1:48080/graphql | jq '.data.createFinding.finding'
501
+ ```
502
+
503
+ ### List all Findings
504
+ ```bash
505
+ curl -sL -X POST \
506
+ -H "Content-Type: application/json" \
507
+ -H "Authorization: Bearer $TOKEN" \
508
+ -d '{"query":"query { findings(first: 50) { edges { node { id title description reporter request { id method host path } } } } }"}' \
509
+ http://127.0.0.1:48080/graphql | jq '.data.findings.edges[].node'
510
+ ```
511
+
512
+ ### Export Findings (via list + manual export)
513
+ ```bash
514
+ # exportFindings mutation is not available in this Caido version.
515
+ # Instead, list all findings and save to file:
516
+ curl -sL -X POST \
517
+ -H "Content-Type: application/json" \
518
+ -H "Authorization: Bearer $TOKEN" \
519
+ -d '{"query":"query { findings(first: 200) { edges { node { id title description reporter request { id method host path response { statusCode } } } } } }"}' \
520
+ http://127.0.0.1:48080/graphql | jq '.data.findings.edges[].node' \
521
+ > output/caido_findings.json
522
+ ```
523
+
524
+ ---
525
+
526
+ ## Scope — Define Target Scope
527
+
528
+ ### Create a Scope
529
+ ```bash
530
+ curl -sL -X POST \
531
+ -H "Content-Type: application/json" \
532
+ -H "Authorization: Bearer $TOKEN" \
533
+ -d '{
534
+ "query": "mutation { createScope(input: { name: \"Target Scope\", allowlist: [\"target.com\", \"*.target.com\", \"api.target.com\"], denylist: [] }) { scope { id name } } }"
535
+ }' \
536
+ http://127.0.0.1:48080/graphql | jq '.data.createScope.scope'
537
+ # Save: SCOPE_ID="..."
538
+ ```
539
+
540
+ ### List Scopes
541
+ ```bash
542
+ curl -sL -X POST \
543
+ -H "Content-Type: application/json" \
544
+ -H "Authorization: Bearer $TOKEN" \
545
+ -d '{"query":"query { scopes { id name allowlist denylist } }"}' \
546
+ http://127.0.0.1:48080/graphql | jq '.data.scopes'
547
+ ```
548
+
549
+ ### Filter requests by Scope
550
+ ```bash
551
+ SCOPE_ID="scope123"
552
+ curl -sL -X POST \
553
+ -H "Content-Type: application/json" \
554
+ -H "Authorization: Bearer $TOKEN" \
555
+ -d "{\"query\":\"query { requests(first: 100, scopeId: \\\"$SCOPE_ID\\\") { edges { node { id method host path response { statusCode } } } } }\"}" \
556
+ http://127.0.0.1:48080/graphql | jq '.data.requests.edges[].node'
557
+ ```
558
+
559
+ ---
560
+
561
+ ## Sitemap — Browse Discovered Endpoints
562
+
563
+ ### List root sitemap entries
564
+ ```bash
565
+ curl -sL -X POST \
566
+ -H "Content-Type: application/json" \
567
+ -H "Authorization: Bearer $TOKEN" \
568
+ -d '{"query":"query { sitemapRootEntries { edges { node { id label hasDescendants } } } }"}' \
569
+ http://127.0.0.1:48080/graphql | jq '.data.sitemapRootEntries.edges[].node'
570
+ ```
571
+
572
+ ### Get descendants of a sitemap entry
573
+ ```bash
574
+ # depth must be DIRECT (immediate children) or ALL (full subtree)
575
+ PARENT_ID="sitemap123"
576
+ curl -sL -X POST \
577
+ -H "Content-Type: application/json" \
578
+ -H "Authorization: Bearer $TOKEN" \
579
+ -d "{\"query\":\"query { sitemapDescendantEntries(parentId: \\\"$PARENT_ID\\\", depth: DIRECT) { edges { node { id label kind hasDescendants } } } }\"}" \
580
+ http://127.0.0.1:48080/graphql | jq '.data.sitemapDescendantEntries.edges[].node'
581
+ ```
582
+
583
+ ---
584
+
585
+ ## Projects — Manage Sessions
586
+
587
+ ### List projects
588
+ ```bash
589
+ curl -sL -X POST \
590
+ -H "Content-Type: application/json" \
591
+ -H "Authorization: Bearer $TOKEN" \
592
+ -d '{"query":"query { projects { id name } currentProject { project { id name } } }"}' \
593
+ http://127.0.0.1:48080/graphql | jq '.data'
594
+ ```
595
+
596
+ ### Switch to a project
597
+ ```bash
598
+ PROJECT_ID="proj123"
599
+ curl -sL -X POST \
600
+ -H "Content-Type: application/json" \
601
+ -H "Authorization: Bearer $TOKEN" \
602
+ -d "{\"query\":\"mutation { selectProject(id: \\\"$PROJECT_ID\\\") { currentProject { project { id name } } } }\"}" \
603
+ http://127.0.0.1:48080/graphql | jq '.data.selectProject'
604
+ ```
605
+
606
+ ### Create a new project
607
+ ```bash
608
+ curl -sL -X POST \
609
+ -H "Content-Type: application/json" \
610
+ -H "Authorization: Bearer $TOKEN" \
611
+ -d '{"query":"mutation { createProject(input: { name: \"target_recon\", temporary: false }) { project { id name } } }"}' \
612
+ http://127.0.0.1:48080/graphql | jq '.data.createProject.project'
613
+ ```
614
+
615
+ ---
616
+
617
+ ## Tamper Rules — Modify Traffic Automatically
618
+
619
+ ### Create a Tamper Rule Collection
620
+ ```bash
621
+ curl -sL -X POST \
622
+ -H "Content-Type: application/json" \
623
+ -H "Authorization: Bearer $TOKEN" \
624
+ -d '{"query":"mutation { createTamperRuleCollection(input: { name: \"Auth Header Rules\" }) { collection { id name } } }"}' \
625
+ http://127.0.0.1:48080/graphql | jq '.data.createTamperRuleCollection.collection'
626
+ ```
627
+
628
+ ### List Tamper Rule Collections
629
+ ```bash
630
+ curl -sL -X POST \
631
+ -H "Content-Type: application/json" \
632
+ -H "Authorization: Bearer $TOKEN" \
633
+ -d '{"query":"query { tamperRuleCollections { id name rules { id name enabled } } }"}' \
634
+ http://127.0.0.1:48080/graphql | jq '.data.tamperRuleCollections'
635
+ ```
636
+
637
+ ---
638
+
639
+ ## Export Requests to File
640
+
641
+ ### Export all requests for a host to JSON
642
+ ```bash
643
+ curl -sL -X POST \
644
+ -H "Content-Type: application/json" \
645
+ -H "Authorization: Bearer $TOKEN" \
646
+ -d '{"query":"query { requestsByOffset(limit: 500, offset: 0, filter: {httpql: \"host.eq:target.com\"}) { edges { node { id method host path response { statusCode length roundtripTime } createdAt } } count { value } } }"}' \
647
+ http://127.0.0.1:48080/graphql \
648
+ | jq '.data.requestsByOffset.edges[].node' \
649
+ > output/caido_history_target.json
650
+
651
+ echo "Exported $(jq -s 'length' output/caido_history_target.json) requests"
652
+ ```
653
+
654
+ ### Find interesting endpoints in history
655
+ ```bash
656
+ # Find 4xx/5xx responses (potential errors worth investigating)
657
+ curl -sL -X POST \
658
+ -H "Content-Type: application/json" \
659
+ -H "Authorization: Bearer $TOKEN" \
660
+ -d '{"query":"query { requestsByOffset(limit: 200, offset: 0, filter: {httpql: \"resp.code.gte:400\"}) { edges { node { id method host path response { statusCode length } } } count { value } } }"}' \
661
+ http://127.0.0.1:48080/graphql | jq '.data.requestsByOffset.edges[].node'
662
+
663
+ # Find POST requests (forms, API endpoints)
664
+ curl -sL -X POST \
665
+ -H "Content-Type: application/json" \
666
+ -H "Authorization: Bearer $TOKEN" \
667
+ -d '{"query":"query { requestsByOffset(limit: 200, offset: 0, filter: {httpql: \"method.eq:POST\"}) { edges { node { id method host path response { statusCode } } } count { value } } }"}' \
668
+ http://127.0.0.1:48080/graphql | jq '.data.requestsByOffset.edges[].node'
669
+
670
+ # Find unauthenticated API calls
671
+ curl -sL -X POST \
672
+ -H "Content-Type: application/json" \
673
+ -H "Authorization: Bearer $TOKEN" \
674
+ -d '{"query":"query { requestsByOffset(limit: 200, offset: 0, filter: {httpql: \"path.cont:\\\"/api/\\\" and resp.code.eq:200\"}) { edges { node { id method host path response { statusCode length } } } count { value } } }"}' \
675
+ http://127.0.0.1:48080/graphql | jq '.data.requestsByOffset.edges[].node'
676
+ ```
677
+
678
+ ---
679
+
680
+ ## Environment Variables (Reusable Values)
681
+
682
+ ### Create an environment for storing tokens/values
683
+ ```bash
684
+ curl -sL -X POST \
685
+ -H "Content-Type: application/json" \
686
+ -H "Authorization: Bearer $TOKEN" \
687
+ -d '{"query":"mutation { createEnvironment(input: { name: \"target_env\" }) { environment { id name } } }"}' \
688
+ http://127.0.0.1:48080/graphql | jq '.data.createEnvironment.environment'
689
+ ```
690
+
691
+ ### List environments and context
692
+ ```bash
693
+ curl -sL -X POST \
694
+ -H "Content-Type: application/json" \
695
+ -H "Authorization: Bearer $TOKEN" \
696
+ -d '{"query":"query { environments { id name } environmentContext { environment { id name } } }"}' \
697
+ http://127.0.0.1:48080/graphql | jq '.data'
698
+ ```
699
+
700
+ ---
701
+
702
+ ## Filter Presets — Save Common Filters
703
+
704
+ ```bash
705
+ # Create a filter preset for in-scope API calls
706
+ curl -sL -X POST \
707
+ -H "Content-Type: application/json" \
708
+ -H "Authorization: Bearer $TOKEN" \
709
+ -d '{"query":"mutation { createFilterPreset(input: { name: \"API calls\", clause: \"host.eq:target.com and path.cont:\\\"/api/\\\"\" }) { preset { id name clause } } }"}' \
710
+ http://127.0.0.1:48080/graphql | jq '.data.createFilterPreset.preset'
711
+
712
+ # List presets
713
+ curl -sL -X POST \
714
+ -H "Content-Type: application/json" \
715
+ -H "Authorization: Bearer $TOKEN" \
716
+ -d '{"query":"query { filterPresets { id name clause } }"}' \
717
+ http://127.0.0.1:48080/graphql | jq '.data.filterPresets'
718
+ ```
719
+
720
+ ---
721
+
722
+ ## Workflow Integration
723
+
724
+ USE CAIDO FOR:
725
+ - Intercepting and modifying authenticated API requests on the fly
726
+ - Replaying specific requests with modified parameters or headers
727
+ - Fuzzing a single confirmed injection point (not bulk scanning)
728
+ - Logging all traffic from playwright/browser through the proxy
729
+ - Analyzing response size/timing differences to detect IDORs
730
+ - Creating Findings attached to specific requests for reporting
731
+
732
+ DO NOT USE CAIDO FOR:
733
+ - Subdomain discovery (use subfinder/amass)
734
+ - Port scanning (use nmap/naabu)
735
+ - Automated vulnerability scanning (use nuclei)
736
+ - Mass fuzzing without a specific hypothesis
737
+
738
+ TYPICAL PENETRATION TESTING WORKFLOW:
739
+ 1. caido-setup → get TOKEN
740
+ 2. Set proxy (curl -x or env vars) → browse/spider the target
741
+ 3. caido_sitemap (no parent_id) → enumerate discovered hosts → drill into directories
742
+ 4. caido_list_requests / requests query → identify interesting endpoints
743
+ 5. caido_intercept status → check if RUNNING; use pause/resume/list/forward/drop for live traffic
744
+ 6. Pick a target request ID → createReplaySession → startReplayTask (modify and replay)
745
+ 7. If injection point found → caido_automate or createAutomateSession → updateAutomateSession → startAutomateTask
746
+ 8. createFinding → attach findings to request IDs for report
747
+ 9. Export findings
748
+
749
+ ---
750
+
751
+ ## Troubleshooting
752
+
753
+ Port conflict (48080 in use):
754
+ ss -tlnp | grep 48080
755
+
756
+ Caido process dead:
757
+ kill -0 $(cat /tmp/airecon_caido.pid) && echo "alive" || echo "dead"
758
+ cat /tmp/caido_startup.log
759
+
760
+ Re-authenticate (token expired):
761
+ TOKEN=$(curl -sL -X POST \
762
+ -H "Content-Type: application/json" \
763
+ -d '{"query":"mutation { loginAsGuest { token { accessToken } } }"}' \
764
+ http://127.0.0.1:48080/graphql | jq -r '.data.loginAsGuest.token.accessToken')
765
+
766
+ Debug GraphQL errors:
767
+ ... | jq '.errors'
768
+ # Or check full response:
769
+ ... | jq '.'
770
+
771
+ Runtime info (version, status):
772
+ curl -sL -X POST \
773
+ -H "Content-Type: application/json" \
774
+ -H "Authorization: Bearer $TOKEN" \
775
+ -d '{"query":"query { runtime { version platform } }"}' \
776
+ http://127.0.0.1:48080/graphql | jq '.data.runtime'