opencode-skills-collection 4.0.68 → 4.0.69

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 (309) hide show
  1. package/bundled-skills/.antigravity-install-manifest.json +266 -1
  2. package/bundled-skills/access-review/SKILL.md +394 -0
  3. package/bundled-skills/access-review/references/details.md +121 -0
  4. package/bundled-skills/agent-evals/SKILL.md +420 -0
  5. package/bundled-skills/agent-observability/SKILL.md +346 -0
  6. package/bundled-skills/agent-observability/references/details.md +786 -0
  7. package/bundled-skills/ai-agent-security/SKILL.md +393 -0
  8. package/bundled-skills/ai-agent-security/references/details.md +912 -0
  9. package/bundled-skills/ai-coding-agent-guardrails/SKILL.md +442 -0
  10. package/bundled-skills/ai-coding-agent-guardrails/references/details.md +753 -0
  11. package/bundled-skills/ai-inference-service-mesh/SKILL.md +449 -0
  12. package/bundled-skills/ai-pipeline-orchestration/SKILL.md +287 -0
  13. package/bundled-skills/ai-red-teaming/SKILL.md +409 -0
  14. package/bundled-skills/ai-security-hardening/SKILL.md +343 -0
  15. package/bundled-skills/ai-sre-incident-response/SKILL.md +336 -0
  16. package/bundled-skills/alerting-oncall/SKILL.md +458 -0
  17. package/bundled-skills/alerting-oncall/references/details.md +84 -0
  18. package/bundled-skills/apk-redteam-pipeline/SKILL.md +446 -0
  19. package/bundled-skills/argocd-gitops/SKILL.md +469 -0
  20. package/bundled-skills/arm-templates/SKILL.md +438 -0
  21. package/bundled-skills/arm-templates/references/details.md +64 -0
  22. package/bundled-skills/asset-inventory/SKILL.md +412 -0
  23. package/bundled-skills/asset-inventory/references/details.md +127 -0
  24. package/bundled-skills/audit-logging/SKILL.md +476 -0
  25. package/bundled-skills/aws-cloudtrail/SKILL.md +486 -0
  26. package/bundled-skills/aws-cost-optimization/SKILL.md +331 -0
  27. package/bundled-skills/aws-ec2/SKILL.md +426 -0
  28. package/bundled-skills/aws-ecs-fargate/SKILL.md +388 -0
  29. package/bundled-skills/aws-iam/SKILL.md +463 -0
  30. package/bundled-skills/aws-lambda/SKILL.md +428 -0
  31. package/bundled-skills/aws-rds/SKILL.md +380 -0
  32. package/bundled-skills/aws-s3/SKILL.md +434 -0
  33. package/bundled-skills/aws-secrets-manager/SKILL.md +486 -0
  34. package/bundled-skills/aws-vpc/SKILL.md +436 -0
  35. package/bundled-skills/azure-ai-document-intelligence-ts/SKILL.md +1 -1
  36. package/bundled-skills/azure-aks/SKILL.md +423 -0
  37. package/bundled-skills/azure-devops/SKILL.md +457 -0
  38. package/bundled-skills/azure-functions-devsec/SKILL.md +436 -0
  39. package/bundled-skills/azure-keyvault/SKILL.md +455 -0
  40. package/bundled-skills/azure-keyvault/references/details.md +83 -0
  41. package/bundled-skills/azure-monitor-audit/SKILL.md +379 -0
  42. package/bundled-skills/azure-networking/SKILL.md +448 -0
  43. package/bundled-skills/azure-networking/references/details.md +135 -0
  44. package/bundled-skills/azure-sql/SKILL.md +413 -0
  45. package/bundled-skills/azure-sql/references/details.md +113 -0
  46. package/bundled-skills/azure-vms/SKILL.md +402 -0
  47. package/bundled-skills/azure-vms/references/details.md +134 -0
  48. package/bundled-skills/backup-recovery/SKILL.md +388 -0
  49. package/bundled-skills/bb-methodology/SKILL.md +451 -0
  50. package/bundled-skills/bb-methodology/references/details.md +120 -0
  51. package/bundled-skills/block-storage/SKILL.md +371 -0
  52. package/bundled-skills/blue-green-deploy/SKILL.md +453 -0
  53. package/bundled-skills/blue-green-deploy/references/details.md +90 -0
  54. package/bundled-skills/bug-bounty/SKILL.md +447 -0
  55. package/bundled-skills/bug-bounty/references/details.md +1316 -0
  56. package/bundled-skills/bugcrowd-reporting/SKILL.md +351 -0
  57. package/bundled-skills/business-continuity/SKILL.md +463 -0
  58. package/bundled-skills/career-ops/SKILL.md +186 -0
  59. package/bundled-skills/cdn-setup/SKILL.md +374 -0
  60. package/bundled-skills/change-management/SKILL.md +438 -0
  61. package/bundled-skills/change-management/references/details.md +105 -0
  62. package/bundled-skills/circleci/SKILL.md +475 -0
  63. package/bundled-skills/cis-benchmarks/SKILL.md +150 -0
  64. package/bundled-skills/cloudflare-pages/SKILL.md +318 -0
  65. package/bundled-skills/cloudflare-r2/SKILL.md +353 -0
  66. package/bundled-skills/cloudflare-workers/SKILL.md +415 -0
  67. package/bundled-skills/cloudflare-zero-trust/SKILL.md +361 -0
  68. package/bundled-skills/cloudformation/SKILL.md +461 -0
  69. package/bundled-skills/constraint-driven-development/SKILL.md +335 -0
  70. package/bundled-skills/constraint-driven-development/references/floor-guard.md +99 -0
  71. package/bundled-skills/container-hardening/SKILL.md +126 -0
  72. package/bundled-skills/container-registries/SKILL.md +435 -0
  73. package/bundled-skills/container-scanning/SKILL.md +416 -0
  74. package/bundled-skills/convex-backend/SKILL.md +338 -0
  75. package/bundled-skills/dast-scanning/SKILL.md +437 -0
  76. package/bundled-skills/database-backups/SKILL.md +425 -0
  77. package/bundled-skills/datadog/SKILL.md +487 -0
  78. package/bundled-skills/dependency-scanning/SKILL.md +457 -0
  79. package/bundled-skills/devcontainers-nix/SKILL.md +416 -0
  80. package/bundled-skills/disaster-recovery/SKILL.md +374 -0
  81. package/bundled-skills/disaster-recovery/references/details.md +219 -0
  82. package/bundled-skills/dns-management/SKILL.md +375 -0
  83. package/bundled-skills/docker-compose/SKILL.md +482 -0
  84. package/bundled-skills/docker-management/SKILL.md +426 -0
  85. package/bundled-skills/ebpf-observability/SKILL.md +436 -0
  86. package/bundled-skills/ebpf-observability/references/details.md +542 -0
  87. package/bundled-skills/elk-stack/SKILL.md +487 -0
  88. package/bundled-skills/enterprise-vpn-attack/SKILL.md +395 -0
  89. package/bundled-skills/evidence-hygiene/SKILL.md +404 -0
  90. package/bundled-skills/feature-flags/SKILL.md +426 -0
  91. package/bundled-skills/feature-flags/references/details.md +86 -0
  92. package/bundled-skills/fedramp-compliance/SKILL.md +453 -0
  93. package/bundled-skills/firebase-app-platform/SKILL.md +381 -0
  94. package/bundled-skills/firewall-config/SKILL.md +479 -0
  95. package/bundled-skills/gcp-audit-logs/SKILL.md +452 -0
  96. package/bundled-skills/gcp-audit-logs/references/details.md +56 -0
  97. package/bundled-skills/gcp-cloud-functions/SKILL.md +284 -0
  98. package/bundled-skills/gcp-cloud-sql/SKILL.md +277 -0
  99. package/bundled-skills/gcp-compute/SKILL.md +319 -0
  100. package/bundled-skills/gcp-gke/SKILL.md +307 -0
  101. package/bundled-skills/gcp-networking/SKILL.md +293 -0
  102. package/bundled-skills/gcp-secret-manager/SKILL.md +421 -0
  103. package/bundled-skills/gcp-secret-manager/references/details.md +131 -0
  104. package/bundled-skills/gdpr-compliance/SKILL.md +451 -0
  105. package/bundled-skills/gdpr-compliance/references/details.md +145 -0
  106. package/bundled-skills/geo-audit/SKILL.md +368 -0
  107. package/bundled-skills/geo-brand-mentions/SKILL.md +68 -0
  108. package/bundled-skills/geo-brand-mentions/references/details.md +471 -0
  109. package/bundled-skills/geo-citability/SKILL.md +350 -0
  110. package/bundled-skills/geo-compare/SKILL.md +340 -0
  111. package/bundled-skills/geo-content/SKILL.md +383 -0
  112. package/bundled-skills/geo-crawlers/SKILL.md +408 -0
  113. package/bundled-skills/geo-llmstxt/SKILL.md +464 -0
  114. package/bundled-skills/geo-platform-optimizer/SKILL.md +314 -0
  115. package/bundled-skills/geo-proposal/SKILL.md +378 -0
  116. package/bundled-skills/geo-prospect/SKILL.md +225 -0
  117. package/bundled-skills/geo-report/SKILL.md +436 -0
  118. package/bundled-skills/geo-report-pdf/SKILL.md +157 -0
  119. package/bundled-skills/geo-schema/SKILL.md +408 -0
  120. package/bundled-skills/geo-technical/SKILL.md +78 -0
  121. package/bundled-skills/geo-technical/references/details.md +543 -0
  122. package/bundled-skills/git-workflow/SKILL.md +460 -0
  123. package/bundled-skills/github-actions/SKILL.md +368 -0
  124. package/bundled-skills/gitlab-ci/SKILL.md +340 -0
  125. package/bundled-skills/gpu-kubernetes-operations/SKILL.md +468 -0
  126. package/bundled-skills/gpu-server-management/SKILL.md +236 -0
  127. package/bundled-skills/hashicorp-vault/SKILL.md +408 -0
  128. package/bundled-skills/helm-charts/SKILL.md +469 -0
  129. package/bundled-skills/hipaa-compliance/SKILL.md +451 -0
  130. package/bundled-skills/hunt-aspnet/SKILL.md +321 -0
  131. package/bundled-skills/hunt-ato/SKILL.md +184 -0
  132. package/bundled-skills/hunt-auth-bypass/SKILL.md +426 -0
  133. package/bundled-skills/hunt-auth-bypass/references/details.md +80 -0
  134. package/bundled-skills/hunt-brute-force/SKILL.md +341 -0
  135. package/bundled-skills/hunt-business-logic/SKILL.md +281 -0
  136. package/bundled-skills/hunt-cache-poison/SKILL.md +382 -0
  137. package/bundled-skills/hunt-captcha-bypass/SKILL.md +136 -0
  138. package/bundled-skills/hunt-cicd/SKILL.md +311 -0
  139. package/bundled-skills/hunt-clickjacking/SKILL.md +110 -0
  140. package/bundled-skills/hunt-cors/SKILL.md +335 -0
  141. package/bundled-skills/hunt-dom/SKILL.md +323 -0
  142. package/bundled-skills/hunt-exceptional-conditions/SKILL.md +111 -0
  143. package/bundled-skills/hunt-file-upload/SKILL.md +202 -0
  144. package/bundled-skills/hunt-fintech-graphql/SKILL.md +289 -0
  145. package/bundled-skills/hunt-forgot-password/SKILL.md +114 -0
  146. package/bundled-skills/hunt-grpc/SKILL.md +317 -0
  147. package/bundled-skills/hunt-host-header/SKILL.md +309 -0
  148. package/bundled-skills/hunt-html-injection/SKILL.md +106 -0
  149. package/bundled-skills/hunt-http-smuggling/SKILL.md +129 -0
  150. package/bundled-skills/hunt-http-smuggling/references/phase2h-smuggling-cachepoison.md +177 -0
  151. package/bundled-skills/hunt-idor/SKILL.md +434 -0
  152. package/bundled-skills/hunt-jwt-crypto/SKILL.md +221 -0
  153. package/bundled-skills/hunt-k8s/SKILL.md +337 -0
  154. package/bundled-skills/hunt-laravel/SKILL.md +255 -0
  155. package/bundled-skills/hunt-ldap/SKILL.md +351 -0
  156. package/bundled-skills/hunt-lfi/SKILL.md +311 -0
  157. package/bundled-skills/hunt-llm-ai/SKILL.md +289 -0
  158. package/bundled-skills/hunt-mfa-bypass/SKILL.md +177 -0
  159. package/bundled-skills/hunt-misc/SKILL.md +378 -0
  160. package/bundled-skills/hunt-nextjs/SKILL.md +299 -0
  161. package/bundled-skills/hunt-nodejs/SKILL.md +263 -0
  162. package/bundled-skills/hunt-nosqli/SKILL.md +210 -0
  163. package/bundled-skills/hunt-ntlm-info/SKILL.md +314 -0
  164. package/bundled-skills/hunt-oauth/SKILL.md +459 -0
  165. package/bundled-skills/hunt-open-redirect/SKILL.md +223 -0
  166. package/bundled-skills/hunt-race-condition/SKILL.md +381 -0
  167. package/bundled-skills/hunt-race-condition/references/details.md +159 -0
  168. package/bundled-skills/hunt-rag-vector/SKILL.md +212 -0
  169. package/bundled-skills/hunt-rce/SKILL.md +444 -0
  170. package/bundled-skills/hunt-rce/references/details.md +110 -0
  171. package/bundled-skills/hunt-saml/SKILL.md +156 -0
  172. package/bundled-skills/hunt-session/SKILL.md +342 -0
  173. package/bundled-skills/hunt-shadow-api/SKILL.md +198 -0
  174. package/bundled-skills/hunt-source-leak/SKILL.md +345 -0
  175. package/bundled-skills/hunt-spa-api/SKILL.md +163 -0
  176. package/bundled-skills/hunt-springboot/SKILL.md +285 -0
  177. package/bundled-skills/hunt-sqli/SKILL.md +466 -0
  178. package/bundled-skills/hunt-ssrf/SKILL.md +396 -0
  179. package/bundled-skills/hunt-ssrf/references/details.md +179 -0
  180. package/bundled-skills/hunt-ssti/SKILL.md +163 -0
  181. package/bundled-skills/hunt-subdomain/SKILL.md +379 -0
  182. package/bundled-skills/hunt-tls-network/SKILL.md +399 -0
  183. package/bundled-skills/hunt-xxe/SKILL.md +466 -0
  184. package/bundled-skills/i-have-adhd/SKILL.md +170 -0
  185. package/bundled-skills/identity-access-management/SKILL.md +382 -0
  186. package/bundled-skills/identity-access-management/references/details.md +524 -0
  187. package/bundled-skills/incident-management/SKILL.md +484 -0
  188. package/bundled-skills/incident-response/SKILL.md +448 -0
  189. package/bundled-skills/incident-response/references/details.md +113 -0
  190. package/bundled-skills/interview-me/SKILL.md +248 -0
  191. package/bundled-skills/iso27001-compliance/SKILL.md +460 -0
  192. package/bundled-skills/jenkins/SKILL.md +462 -0
  193. package/bundled-skills/jev-use/SKILL.md +158 -0
  194. package/bundled-skills/kubernetes-hardening/SKILL.md +154 -0
  195. package/bundled-skills/kubernetes-ops/SKILL.md +449 -0
  196. package/bundled-skills/kubernetes-ops/references/details.md +108 -0
  197. package/bundled-skills/kustomize/SKILL.md +478 -0
  198. package/bundled-skills/linux-administration/SKILL.md +367 -0
  199. package/bundled-skills/linux-hardening/SKILL.md +154 -0
  200. package/bundled-skills/llm-app-security/SKILL.md +389 -0
  201. package/bundled-skills/llm-app-security/references/details.md +674 -0
  202. package/bundled-skills/llm-caching/SKILL.md +334 -0
  203. package/bundled-skills/llm-cost-optimization/SKILL.md +311 -0
  204. package/bundled-skills/llm-fine-tuning/SKILL.md +329 -0
  205. package/bundled-skills/llm-gateway/SKILL.md +282 -0
  206. package/bundled-skills/llm-inference-scaling/SKILL.md +286 -0
  207. package/bundled-skills/llmops-platform-engineering/SKILL.md +472 -0
  208. package/bundled-skills/load-balancing/SKILL.md +403 -0
  209. package/bundled-skills/loki-logging/SKILL.md +479 -0
  210. package/bundled-skills/m365-entra-attack/SKILL.md +423 -0
  211. package/bundled-skills/mac-mini-llm-lab/SKILL.md +350 -0
  212. package/bundled-skills/mcp-server-security/SKILL.md +356 -0
  213. package/bundled-skills/mcp-server-security/references/details.md +745 -0
  214. package/bundled-skills/mdm-device-management/SKILL.md +404 -0
  215. package/bundled-skills/mdm-device-management/references/details.md +410 -0
  216. package/bundled-skills/meme-coin-audit/SKILL.md +402 -0
  217. package/bundled-skills/mid-engagement-ir-detection/SKILL.md +377 -0
  218. package/bundled-skills/model-registry-governance/SKILL.md +452 -0
  219. package/bundled-skills/model-serving-kubernetes/SKILL.md +339 -0
  220. package/bundled-skills/model-supply-chain-security/SKILL.md +427 -0
  221. package/bundled-skills/mongodb/SKILL.md +436 -0
  222. package/bundled-skills/multi-tenant-llm-hosting/SKILL.md +435 -0
  223. package/bundled-skills/multi-tenant-llm-hosting/references/details.md +211 -0
  224. package/bundled-skills/mysql/SKILL.md +390 -0
  225. package/bundled-skills/new-relic/SKILL.md +472 -0
  226. package/bundled-skills/nfs-storage/SKILL.md +356 -0
  227. package/bundled-skills/object-storage/SKILL.md +378 -0
  228. package/bundled-skills/offensive-osint/SKILL.md +443 -0
  229. package/bundled-skills/okta-attack/SKILL.md +436 -0
  230. package/bundled-skills/ollama-stack/SKILL.md +379 -0
  231. package/bundled-skills/openclaw-deployment-hardening/SKILL.md +135 -0
  232. package/bundled-skills/openclaw-local-mac-mini/SKILL.md +426 -0
  233. package/bundled-skills/openclaw-local-mac-mini/references/details.md +221 -0
  234. package/bundled-skills/openclaw-security-hardening/SKILL.md +135 -0
  235. package/bundled-skills/openshift/SKILL.md +485 -0
  236. package/bundled-skills/opentelemetry/SKILL.md +438 -0
  237. package/bundled-skills/opentelemetry/references/details.md +78 -0
  238. package/bundled-skills/opentofu-migration/SKILL.md +349 -0
  239. package/bundled-skills/osint-methodology/SKILL.md +460 -0
  240. package/bundled-skills/osint-methodology/references/details.md +1350 -0
  241. package/bundled-skills/pci-dss-compliance/SKILL.md +446 -0
  242. package/bundled-skills/penetration-testing/SKILL.md +152 -0
  243. package/bundled-skills/performance-tuning/SKILL.md +381 -0
  244. package/bundled-skills/planetscale/SKILL.md +297 -0
  245. package/bundled-skills/platform-engineering/SKILL.md +348 -0
  246. package/bundled-skills/platform-engineering/references/details.md +944 -0
  247. package/bundled-skills/podman/SKILL.md +405 -0
  248. package/bundled-skills/policy-as-code/SKILL.md +434 -0
  249. package/bundled-skills/policy-as-code/references/details.md +204 -0
  250. package/bundled-skills/postgresql-devsec/SKILL.md +378 -0
  251. package/bundled-skills/prometheus-grafana/SKILL.md +469 -0
  252. package/bundled-skills/prompt-injection-defense/SKILL.md +483 -0
  253. package/bundled-skills/rag-infrastructure/SKILL.md +269 -0
  254. package/bundled-skills/rag-observability-evals/SKILL.md +444 -0
  255. package/bundled-skills/rag-observability-evals/references/details.md +92 -0
  256. package/bundled-skills/recon-scope-triage/SKILL.md +128 -0
  257. package/bundled-skills/redis/SKILL.md +421 -0
  258. package/bundled-skills/redteam-report-template/SKILL.md +370 -0
  259. package/bundled-skills/report-writing/SKILL.md +426 -0
  260. package/bundled-skills/report-writing/references/details.md +187 -0
  261. package/bundled-skills/reverse-proxy/SKILL.md +420 -0
  262. package/bundled-skills/runbook-creation/SKILL.md +438 -0
  263. package/bundled-skills/runbook-creation/references/details.md +71 -0
  264. package/bundled-skills/saas-security-posture/SKILL.md +415 -0
  265. package/bundled-skills/sast-scanning/SKILL.md +444 -0
  266. package/bundled-skills/sbom-supply-chain/SKILL.md +433 -0
  267. package/bundled-skills/security-arsenal/SKILL.md +446 -0
  268. package/bundled-skills/security-arsenal/references/details.md +540 -0
  269. package/bundled-skills/security-automation/SKILL.md +146 -0
  270. package/bundled-skills/semantic-versioning/SKILL.md +434 -0
  271. package/bundled-skills/semantic-versioning/references/details.md +83 -0
  272. package/bundled-skills/service-mesh/SKILL.md +422 -0
  273. package/bundled-skills/soc2-compliance/SKILL.md +409 -0
  274. package/bundled-skills/sops-encryption/SKILL.md +124 -0
  275. package/bundled-skills/sre-dashboards/SKILL.md +143 -0
  276. package/bundled-skills/ssh-configuration/SKILL.md +324 -0
  277. package/bundled-skills/ssl-tls-management/SKILL.md +428 -0
  278. package/bundled-skills/ssl-tls-management/references/details.md +99 -0
  279. package/bundled-skills/startup-it-troubleshooting/SKILL.md +415 -0
  280. package/bundled-skills/supply-chain-attack-recon/SKILL.md +453 -0
  281. package/bundled-skills/supply-chain-attack-recon/references/details.md +258 -0
  282. package/bundled-skills/systemd-services/SKILL.md +379 -0
  283. package/bundled-skills/terraform-aws/SKILL.md +125 -0
  284. package/bundled-skills/terraform-azure/SKILL.md +415 -0
  285. package/bundled-skills/terraform-azure/references/details.md +231 -0
  286. package/bundled-skills/terraform-gcp/SKILL.md +369 -0
  287. package/bundled-skills/threat-modeling/SKILL.md +487 -0
  288. package/bundled-skills/user-management/SKILL.md +383 -0
  289. package/bundled-skills/using-agent-skills/SKILL.md +220 -0
  290. package/bundled-skills/vector-database-ops/SKILL.md +300 -0
  291. package/bundled-skills/vendor-management/SKILL.md +439 -0
  292. package/bundled-skills/vendor-management/references/details.md +109 -0
  293. package/bundled-skills/vercel-deployments/SKILL.md +296 -0
  294. package/bundled-skills/vllm-server/SKILL.md +236 -0
  295. package/bundled-skills/vmware-vcenter-attack/SKILL.md +412 -0
  296. package/bundled-skills/vpn-setup/SKILL.md +452 -0
  297. package/bundled-skills/vulnerability-scanning/SKILL.md +448 -0
  298. package/bundled-skills/waf-setup/SKILL.md +354 -0
  299. package/bundled-skills/waf-setup/references/details.md +211 -0
  300. package/bundled-skills/web2-recon/SKILL.md +440 -0
  301. package/bundled-skills/web2-recon/references/details.md +319 -0
  302. package/bundled-skills/web3-audit/SKILL.md +445 -0
  303. package/bundled-skills/web3-audit/references/details.md +224 -0
  304. package/bundled-skills/windows-hardening/SKILL.md +454 -0
  305. package/bundled-skills/windows-hardening/references/details.md +204 -0
  306. package/bundled-skills/windows-server/SKILL.md +318 -0
  307. package/bundled-skills/zero-trust/SKILL.md +461 -0
  308. package/package.json +1 -1
  309. package/skills_index.json +6943 -323
@@ -0,0 +1,393 @@
1
+ ---
2
+ name: ai-agent-security
3
+ description: Secure AI agents against prompt injection, tool abuse, and data exfiltration
4
+ with defense-in-depth controls.
5
+ category: security
6
+ risk: safe
7
+ source: https://github.com/BagelHole/DevOps-Security-Agent-Skills
8
+ source_repo: BagelHole/DevOps-Security-Agent-Skills
9
+ source_type: community
10
+ date_added: '2026-09-20'
11
+ license: MIT
12
+ license_source: https://github.com/BagelHole/DevOps-Security-Agent-Skills/blob/main/LICENSE
13
+ compatibility: Requires the relevant security tooling (scanners, vault CLIs) and an
14
+ authorized scope for any active assessment. Docs-only; helper scripts and templates
15
+ not bundled.
16
+ metadata:
17
+ author: devops-skills
18
+ version: '2.0'
19
+ ---
20
+
21
+ # AI Agent Security
22
+
23
+ Protect agentic AI systems from adversarial input, unsafe tool execution, data leakage, and privilege abuse with layered security controls.
24
+
25
+ ## Prerequisites
26
+
27
+ - Python 3.10+ for guardrail code examples
28
+ - Docker or Podman for sandbox execution
29
+ - OpenTelemetry collector for audit logging
30
+ - Familiarity with your agent framework (LangChain, CrewAI, Autogen, custom)
31
+ - Access to policy engine (OPA/Cedar) for permission boundaries
32
+
33
+ ## Threat Model — STRIDE for AI Agents
34
+
35
+ AI agents introduce a unique threat surface. Apply STRIDE specifically to agentic components:
36
+
37
+ | Threat | Agent-Specific Example | Control |
38
+ |--------|----------------------|---------|
39
+ | **Spoofing** | Attacker crafts input that mimics a trusted internal tool response | Signed tool responses, HMAC verification |
40
+ | **Tampering** | Prompt injection modifies agent reasoning mid-chain | Input validation, prompt armoring |
41
+ | **Repudiation** | Agent takes destructive action with no audit trail | Immutable structured logging |
42
+ | **Information Disclosure** | Agent leaks PII, secrets, or internal architecture in responses | Output filtering, content classifiers |
43
+ | **Denial of Service** | Adversarial prompt causes infinite tool loops or token exhaustion | Rate limits, token budgets, circuit breakers |
44
+ | **Elevation of Privilege** | Agent escalates from read-only to write via chained tool calls | RBAC per tool, least-privilege scoping |
45
+
46
+ ### Key Threat Categories
47
+
48
+ **Prompt Injection** — Untrusted content (user input, web scrapes, document contents) manipulates the agent's system prompt or reasoning chain to execute unintended actions.
49
+
50
+ **Tool Abuse** — The agent calls tools in sequences or with parameters the designer did not anticipate, achieving effects beyond its intended scope.
51
+
52
+ **Data Exfiltration** — The agent encodes sensitive data (credentials, PII, internal IPs) into its responses, tool calls, or outbound HTTP requests.
53
+
54
+ **Cross-Tenant Leakage** — In multi-tenant deployments, context from one tenant's session bleeds into another through shared memory, vector stores, or cache.
55
+
56
+ **Privilege Escalation** — The agent chains low-privilege tool calls to achieve high-privilege outcomes (e.g., read config -> extract credentials -> call admin API).
57
+
58
+ ## Input Validation
59
+
60
+ Every input to an agent must be sanitized before it reaches the model or any tool. This includes user messages, tool outputs being fed back, and retrieved documents.
61
+
62
+ ### Prompt Injection Detection
63
+
64
+ ```python
65
+ import re
66
+ from dataclasses import dataclass
67
+ from enum import Enum
68
+
69
+ class RiskLevel(Enum):
70
+ LOW = "low"
71
+ MEDIUM = "medium"
72
+ HIGH = "high"
73
+ CRITICAL = "critical"
74
+
75
+ @dataclass
76
+ class ValidationResult:
77
+ is_safe: bool
78
+ risk_level: RiskLevel
79
+ matched_rules: list[str]
80
+ sanitized_input: str
81
+
82
+ INJECTION_PATTERNS = [
83
+ (r"ignore\s+(all\s+)?(previous|prior|above)\s+(instructions|prompts|rules)", "instruction_override"),
84
+ (r"you\s+are\s+now\s+(a|an|the)\s+", "role_hijack"),
85
+ (r"system\s*:\s*", "system_prompt_inject"),
86
+ (r"<\|?(system|im_start|endoftext)\|?>", "control_token_inject"),
87
+ (r"\[INST\]|\[\/INST\]|<<SYS>>", "template_inject"),
88
+ (r"(?:execute|run|eval)\s*\(", "code_execution_attempt"),
89
+ (r"(?:curl|wget|nc|ncat)\s+", "network_command_inject"),
90
+ (r"(?:rm\s+-rf|mkfs|dd\s+if=|chmod\s+777)", "destructive_command"),
91
+ (r"(?:\/etc\/passwd|\/etc\/shadow|\.env\b|\.ssh\/)", "path_traversal"),
92
+ (r"(?:BEGIN\s+(?:RSA|DSA|EC)\s+PRIVATE\s+KEY)", "secret_exfil_attempt"),
93
+ ]
94
+
95
+ def validate_agent_input(user_input: str, max_length: int = 4096) -> ValidationResult:
96
+ """Validate and sanitize input before passing to agent."""
97
+ matched = []
98
+ risk = RiskLevel.LOW
99
+
100
+ # Length check
101
+ if len(user_input) > max_length:
102
+ matched.append("input_too_long")
103
+ risk = RiskLevel.MEDIUM
104
+
105
+ # Null byte and control character removal
106
+ sanitized = user_input.replace("\x00", "")
107
+ sanitized = re.sub(r"[\x01-\x08\x0b\x0c\x0e-\x1f]", "", sanitized)
108
+
109
+ # Pattern matching
110
+ for pattern, rule_name in INJECTION_PATTERNS:
111
+ if re.search(pattern, sanitized, re.IGNORECASE):
112
+ matched.append(rule_name)
113
+ risk = RiskLevel.HIGH
114
+
115
+ # Stacked injection detection (multiple suspicious patterns)
116
+ if len(matched) >= 3:
117
+ risk = RiskLevel.CRITICAL
118
+
119
+ is_safe = risk in (RiskLevel.LOW, RiskLevel.MEDIUM)
120
+
121
+ return ValidationResult(
122
+ is_safe=is_safe,
123
+ risk_level=risk,
124
+ matched_rules=matched,
125
+ sanitized_input=sanitized[:max_length] if is_safe else "",
126
+ )
127
+ ```
128
+
129
+ ### Content Classification Middleware
130
+
131
+ Use a lightweight classifier as middleware before the agent processes any input:
132
+
133
+ ```python
134
+ from functools import wraps
135
+ from typing import Callable
136
+
137
+ def input_guard(validator: Callable = validate_agent_input):
138
+ """Decorator that guards agent entry points against unsafe input."""
139
+ def decorator(func):
140
+ @wraps(func)
141
+ async def wrapper(user_input: str, *args, **kwargs):
142
+ result = validator(user_input)
143
+
144
+ if result.risk_level == RiskLevel.CRITICAL:
145
+ await log_security_event(
146
+ event="input_blocked",
147
+ risk=result.risk_level.value,
148
+ rules=result.matched_rules,
149
+ input_hash=hashlib.sha256(user_input.encode()).hexdigest(),
150
+ )
151
+ raise InputRejectedError(
152
+ f"Input blocked: matched {result.matched_rules}"
153
+ )
154
+
155
+ if result.risk_level == RiskLevel.HIGH:
156
+ await log_security_event(
157
+ event="input_flagged",
158
+ risk=result.risk_level.value,
159
+ rules=result.matched_rules,
160
+ )
161
+ # Allow through but flag for review
162
+ kwargs["_security_flags"] = result.matched_rules
163
+
164
+ return await func(result.sanitized_input, *args, **kwargs)
165
+ return wrapper
166
+ return decorator
167
+
168
+ # Usage
169
+ @input_guard()
170
+ async def handle_user_message(message: str, session_id: str, **kwargs):
171
+ """Process a validated user message through the agent."""
172
+ flags = kwargs.get("_security_flags", [])
173
+ if flags:
174
+ # Route to sandboxed execution path
175
+ return await agent.run_sandboxed(message, session_id)
176
+ return await agent.run(message, session_id)
177
+ ```
178
+
179
+ ## Tool Execution Sandboxing
180
+
181
+ Never let an agent execute tools directly on the host. Isolate every tool invocation inside a sandbox.
182
+
183
+ ### Docker Sandbox Configuration
184
+
185
+ ```yaml
186
+ # docker-compose.agent-sandbox.yml
187
+ version: "3.8"
188
+
189
+ services:
190
+ agent-sandbox:
191
+ image: agent-tools:latest
192
+ read_only: true
193
+ security_opt:
194
+ - no-new-privileges:true
195
+ - seccomp:seccomp-profile.json
196
+ cap_drop:
197
+ - ALL
198
+ cap_add:
199
+ - NET_BIND_SERVICE # Only if tool needs network
200
+ tmpfs:
201
+ - /tmp:size=64M,noexec,nosuid
202
+ mem_limit: 512m
203
+ cpus: "0.5"
204
+ pids_limit: 64
205
+ networks:
206
+ - sandbox-net
207
+ environment:
208
+ - TOOL_TIMEOUT=30
209
+ - MAX_OUTPUT_BYTES=65536
210
+ volumes:
211
+ - type: bind
212
+ source: ./tool-workspace
213
+ target: /workspace
214
+ read_only: false
215
+ dns:
216
+ - 127.0.0.1 # Block external DNS by default
217
+
218
+ networks:
219
+ sandbox-net:
220
+ driver: bridge
221
+ internal: true # No external network access
222
+ ```
223
+
224
+ ### gVisor Runtime for Stronger Isolation
225
+
226
+ ```bash
227
+ # Install gVisor runsc runtime
228
+ curl -fsSL https://gvisor.dev/archive.key | sudo gpg --dearmor -o /usr/share/keyrings/gvisor-archive-keyring.gpg
229
+ echo "deb [signed-by=/usr/share/keyrings/gvisor-archive-keyring.gpg] https://storage.googleapis.com/gvisor/releases release main" | \
230
+ sudo tee /etc/apt/sources.list.d/gvisor.list
231
+ sudo apt-get update && sudo apt-get install -y runsc
232
+
233
+ # Configure Docker to use gVisor
234
+ cat <<'EOF' | sudo tee /etc/docker/daemon.json
235
+ {
236
+ "runtimes": {
237
+ "runsc": {
238
+ "path": "/usr/bin/runsc",
239
+ "runtimeArgs": [
240
+ "--network=none",
241
+ "--directfs=false"
242
+ ]
243
+ }
244
+ }
245
+ }
246
+ EOF
247
+ sudo systemctl restart docker
248
+
249
+ # Run agent sandbox with gVisor
250
+ docker run --runtime=runsc --rm \
251
+ --read-only \
252
+ --memory=512m \
253
+ --cpus=0.5 \
254
+ --pids-limit=64 \
255
+ agent-tools:latest \
256
+ python /tools/execute.py --tool="$TOOL_NAME" --args="$TOOL_ARGS"
257
+ ```
258
+
259
+ ### Tool Allowlist Enforcement
260
+
261
+ ```python
262
+ from dataclasses import dataclass, field
263
+
264
+ @dataclass
265
+ class ToolPolicy:
266
+ name: str
267
+ allowed_args: dict[str, type] # parameter name -> expected type
268
+ max_calls_per_session: int = 10
269
+ requires_approval: bool = False
270
+ allowed_patterns: list[str] = field(default_factory=list)
271
+ blocked_patterns: list[str] = field(default_factory=list)
272
+
273
+ TOOL_ALLOWLIST: dict[str, ToolPolicy] = {
274
+ "read_file": ToolPolicy(
275
+ name="read_file",
276
+ allowed_args={"path": str},
277
+ max_calls_per_session=20,
278
+ allowed_patterns=[r"^/workspace/", r"^/data/public/"],
279
+ blocked_patterns=[r"\.env$", r"\.key$", r"\.pem$", r"/etc/", r"/proc/"],
280
+ ),
281
+ "run_query": ToolPolicy(
282
+ name="run_query",
283
+ allowed_args={"sql": str, "database": str},
284
+ max_calls_per_session=5,
285
+ allowed_patterns=[r"^SELECT\s", r"^EXPLAIN\s"],
286
+ blocked_patterns=[r"\bDROP\b", r"\bDELETE\b", r"\bUPDATE\b", r"\bINSERT\b", r"\bALTER\b"],
287
+ ),
288
+ "http_request": ToolPolicy(
289
+ name="http_request",
290
+ allowed_args={"url": str, "method": str},
291
+ max_calls_per_session=10,
292
+ requires_approval=True,
293
+ allowed_patterns=[r"^https://api\.internal\."],
294
+ blocked_patterns=[r"^https?://169\.254\.", r"^https?://metadata\.google\."],
295
+ ),
296
+ "execute_code": ToolPolicy(
297
+ name="execute_code",
298
+ allowed_args={"code": str, "language": str},
299
+ max_calls_per_session=3,
300
+ requires_approval=True,
301
+ blocked_patterns=[r"import\s+subprocess", r"import\s+os", r"__import__", r"eval\(", r"exec\("],
302
+ ),
303
+ }
304
+
305
+ class ToolGatekeeper:
306
+ def __init__(self, allowlist: dict[str, ToolPolicy]):
307
+ self.allowlist = allowlist
308
+ self.call_counts: dict[str, int] = {}
309
+
310
+ async def authorize(self, tool_name: str, args: dict) -> bool:
311
+ if tool_name not in self.allowlist:
312
+ await log_security_event(
313
+ event="tool_denied_not_in_allowlist",
314
+ tool=tool_name,
315
+ )
316
+ return False
317
+
318
+ policy = self.allowlist[tool_name]
319
+
320
+ # Check call count
321
+ count = self.call_counts.get(tool_name, 0)
322
+ if count >= policy.max_calls_per_session:
323
+ await log_security_event(
324
+ event="tool_denied_rate_limit",
325
+ tool=tool_name,
326
+ count=count,
327
+ )
328
+ return False
329
+
330
+ # Validate argument types
331
+ for arg_name, expected_type in policy.allowed_args.items():
332
+ if arg_name in args and not isinstance(args[arg_name], expected_type):
333
+ return False
334
+
335
+ # Check patterns against all string arguments
336
+ for arg_value in args.values():
337
+ if not isinstance(arg_value, str):
338
+ continue
339
+ # Must match at least one allowed pattern (if any defined)
340
+ if policy.allowed_patterns:
341
+ if not any(re.search(p, arg_value, re.IGNORECASE) for p in policy.allowed_patterns):
342
+ return False
343
+ # Must not match any blocked pattern
344
+ if any(re.search(p, arg_value, re.IGNORECASE) for p in policy.blocked_patterns):
345
+ await log_security_event(
346
+ event="tool_denied_blocked_pattern",
347
+ tool=tool_name,
348
+ arg_value_hash=hashlib.sha256(arg_value.encode()).hexdigest(),
349
+ )
350
+ return False
351
+
352
+ self.call_counts[tool_name] = count + 1
353
+ return True
354
+ ```
355
+
356
+
357
+ ## Contents
358
+
359
+ - [Permission Boundaries](references/details.md)
360
+ - [Output Filtering](references/details.md)
361
+ - [Audit Logging](references/details.md)
362
+ - [Rate Limiting and Abuse Prevention](references/details.md)
363
+ - [Kill Switches and Circuit Breakers](references/details.md)
364
+ - [Red Team Checklist](references/details.md)
365
+ - [Incident Response Playbook](references/details.md)
366
+ - [Troubleshooting](references/details.md)
367
+ - [Best Practices](references/details.md)
368
+ - [Related Skills](references/details.md)
369
+
370
+ ## When to Use This Skill
371
+
372
+ Use this skill when:
373
+ - Building AI agents that invoke tools, APIs, or shell commands
374
+ - Deploying agents with access to production databases, cloud accounts, or internal services
375
+ - Hardening multi-tenant agent platforms against cross-tenant data leakage
376
+ - Adding guardrails to autonomous coding agents or SRE bots
377
+ - Designing approval workflows for high-risk agent actions
378
+ - Conducting red-team exercises against agentic systems
379
+ - Responding to incidents involving compromised or misbehaving agents
380
+
381
+ ## Limitations
382
+
383
+ - Apply guidance only within authorized scope; test destructive steps in non-production first.
384
+ - Docs-only import: upstream scripts and templates not bundled.
385
+
386
+ ### Example
387
+
388
+ ```bash
389
+ # Read-only first: inventory before any active step.
390
+ which <tool> && <tool> --help | head -n 20
391
+ ```
392
+
393
+ > Adapted from [BagelHole/DevOps-Security-Agent-Skills](https://github.com/BagelHole/DevOps-Security-Agent-Skills) (MIT); frontmatter, When to Use/Limitations, and safety boundaries added for upstream compliance. Docs-only import: helper scripts and templates not bundled.