opencode-skills-collection 4.0.67 → 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.
- package/bundled-skills/.antigravity-install-manifest.json +281 -1
- package/bundled-skills/access-review/SKILL.md +394 -0
- package/bundled-skills/access-review/references/details.md +121 -0
- package/bundled-skills/agent-evals/SKILL.md +420 -0
- package/bundled-skills/agent-observability/SKILL.md +346 -0
- package/bundled-skills/agent-observability/references/details.md +786 -0
- package/bundled-skills/ai-agent-security/SKILL.md +393 -0
- package/bundled-skills/ai-agent-security/references/details.md +912 -0
- package/bundled-skills/ai-coding-agent-guardrails/SKILL.md +442 -0
- package/bundled-skills/ai-coding-agent-guardrails/references/details.md +753 -0
- package/bundled-skills/ai-inference-service-mesh/SKILL.md +449 -0
- package/bundled-skills/ai-pipeline-orchestration/SKILL.md +287 -0
- package/bundled-skills/ai-red-teaming/SKILL.md +409 -0
- package/bundled-skills/ai-security-hardening/SKILL.md +343 -0
- package/bundled-skills/ai-sre-incident-response/SKILL.md +336 -0
- package/bundled-skills/alerting-oncall/SKILL.md +458 -0
- package/bundled-skills/alerting-oncall/references/details.md +84 -0
- package/bundled-skills/anti-slop-design/SKILL.md +393 -0
- package/bundled-skills/antigravity-maintainer-batch-release/SKILL.md +1 -0
- package/bundled-skills/apk-redteam-pipeline/SKILL.md +446 -0
- package/bundled-skills/argocd-gitops/SKILL.md +469 -0
- package/bundled-skills/arm-templates/SKILL.md +438 -0
- package/bundled-skills/arm-templates/references/details.md +64 -0
- package/bundled-skills/artifact-yylo/SKILL.md +122 -0
- package/bundled-skills/asset-inventory/SKILL.md +412 -0
- package/bundled-skills/asset-inventory/references/details.md +127 -0
- package/bundled-skills/audit-logging/SKILL.md +476 -0
- package/bundled-skills/aws-cloudtrail/SKILL.md +486 -0
- package/bundled-skills/aws-cost-optimization/SKILL.md +331 -0
- package/bundled-skills/aws-ec2/SKILL.md +426 -0
- package/bundled-skills/aws-ecs-fargate/SKILL.md +388 -0
- package/bundled-skills/aws-iam/SKILL.md +463 -0
- package/bundled-skills/aws-lambda/SKILL.md +428 -0
- package/bundled-skills/aws-rds/SKILL.md +380 -0
- package/bundled-skills/aws-s3/SKILL.md +434 -0
- package/bundled-skills/aws-secrets-manager/SKILL.md +486 -0
- package/bundled-skills/aws-vpc/SKILL.md +436 -0
- package/bundled-skills/azure-ai-document-intelligence-ts/SKILL.md +1 -1
- package/bundled-skills/azure-aks/SKILL.md +423 -0
- package/bundled-skills/azure-devops/SKILL.md +457 -0
- package/bundled-skills/azure-functions-devsec/SKILL.md +436 -0
- package/bundled-skills/azure-keyvault/SKILL.md +455 -0
- package/bundled-skills/azure-keyvault/references/details.md +83 -0
- package/bundled-skills/azure-monitor-audit/SKILL.md +379 -0
- package/bundled-skills/azure-networking/SKILL.md +448 -0
- package/bundled-skills/azure-networking/references/details.md +135 -0
- package/bundled-skills/azure-sql/SKILL.md +413 -0
- package/bundled-skills/azure-sql/references/details.md +113 -0
- package/bundled-skills/azure-vms/SKILL.md +402 -0
- package/bundled-skills/azure-vms/references/details.md +134 -0
- package/bundled-skills/backup-recovery/SKILL.md +388 -0
- package/bundled-skills/bb-methodology/SKILL.md +451 -0
- package/bundled-skills/bb-methodology/references/details.md +120 -0
- package/bundled-skills/block-storage/SKILL.md +371 -0
- package/bundled-skills/blue-green-deploy/SKILL.md +453 -0
- package/bundled-skills/blue-green-deploy/references/details.md +90 -0
- package/bundled-skills/bug-bounty/SKILL.md +447 -0
- package/bundled-skills/bug-bounty/references/details.md +1316 -0
- package/bundled-skills/bugcrowd-reporting/SKILL.md +351 -0
- package/bundled-skills/business-continuity/SKILL.md +463 -0
- package/bundled-skills/career-ops/SKILL.md +186 -0
- package/bundled-skills/cdn-setup/SKILL.md +374 -0
- package/bundled-skills/change-management/SKILL.md +438 -0
- package/bundled-skills/change-management/references/details.md +105 -0
- package/bundled-skills/circleci/SKILL.md +475 -0
- package/bundled-skills/cis-benchmarks/SKILL.md +150 -0
- package/bundled-skills/cloudflare-pages/SKILL.md +318 -0
- package/bundled-skills/cloudflare-r2/SKILL.md +353 -0
- package/bundled-skills/cloudflare-workers/SKILL.md +415 -0
- package/bundled-skills/cloudflare-zero-trust/SKILL.md +361 -0
- package/bundled-skills/cloudformation/SKILL.md +461 -0
- package/bundled-skills/constraint-driven-development/SKILL.md +335 -0
- package/bundled-skills/constraint-driven-development/references/floor-guard.md +99 -0
- package/bundled-skills/container-hardening/SKILL.md +126 -0
- package/bundled-skills/container-registries/SKILL.md +435 -0
- package/bundled-skills/container-scanning/SKILL.md +416 -0
- package/bundled-skills/convex-backend/SKILL.md +338 -0
- package/bundled-skills/dast-scanning/SKILL.md +437 -0
- package/bundled-skills/database-backups/SKILL.md +425 -0
- package/bundled-skills/datadog/SKILL.md +487 -0
- package/bundled-skills/dependency-scanning/SKILL.md +457 -0
- package/bundled-skills/devcontainers-nix/SKILL.md +416 -0
- package/bundled-skills/disaster-recovery/SKILL.md +374 -0
- package/bundled-skills/disaster-recovery/references/details.md +219 -0
- package/bundled-skills/dns-management/SKILL.md +375 -0
- package/bundled-skills/docker-compose/SKILL.md +482 -0
- package/bundled-skills/docker-management/SKILL.md +426 -0
- package/bundled-skills/ebpf-observability/SKILL.md +436 -0
- package/bundled-skills/ebpf-observability/references/details.md +542 -0
- package/bundled-skills/elk-stack/SKILL.md +487 -0
- package/bundled-skills/enterprise-vpn-attack/SKILL.md +395 -0
- package/bundled-skills/evidence-hygiene/SKILL.md +404 -0
- package/bundled-skills/feature-flags/SKILL.md +426 -0
- package/bundled-skills/feature-flags/references/details.md +86 -0
- package/bundled-skills/fedramp-compliance/SKILL.md +453 -0
- package/bundled-skills/firebase-app-platform/SKILL.md +381 -0
- package/bundled-skills/firewall-config/SKILL.md +479 -0
- package/bundled-skills/gcp-audit-logs/SKILL.md +452 -0
- package/bundled-skills/gcp-audit-logs/references/details.md +56 -0
- package/bundled-skills/gcp-cloud-functions/SKILL.md +284 -0
- package/bundled-skills/gcp-cloud-sql/SKILL.md +277 -0
- package/bundled-skills/gcp-compute/SKILL.md +319 -0
- package/bundled-skills/gcp-gke/SKILL.md +307 -0
- package/bundled-skills/gcp-networking/SKILL.md +293 -0
- package/bundled-skills/gcp-secret-manager/SKILL.md +421 -0
- package/bundled-skills/gcp-secret-manager/references/details.md +131 -0
- package/bundled-skills/gdpr-compliance/SKILL.md +451 -0
- package/bundled-skills/gdpr-compliance/references/details.md +145 -0
- package/bundled-skills/geo-audit/SKILL.md +368 -0
- package/bundled-skills/geo-brand-mentions/SKILL.md +68 -0
- package/bundled-skills/geo-brand-mentions/references/details.md +471 -0
- package/bundled-skills/geo-citability/SKILL.md +350 -0
- package/bundled-skills/geo-compare/SKILL.md +340 -0
- package/bundled-skills/geo-content/SKILL.md +383 -0
- package/bundled-skills/geo-crawlers/SKILL.md +408 -0
- package/bundled-skills/geo-llmstxt/SKILL.md +464 -0
- package/bundled-skills/geo-platform-optimizer/SKILL.md +314 -0
- package/bundled-skills/geo-proposal/SKILL.md +378 -0
- package/bundled-skills/geo-prospect/SKILL.md +225 -0
- package/bundled-skills/geo-report/SKILL.md +436 -0
- package/bundled-skills/geo-report-pdf/SKILL.md +157 -0
- package/bundled-skills/geo-schema/SKILL.md +408 -0
- package/bundled-skills/geo-technical/SKILL.md +78 -0
- package/bundled-skills/geo-technical/references/details.md +543 -0
- package/bundled-skills/git-workflow/SKILL.md +460 -0
- package/bundled-skills/github-actions/SKILL.md +368 -0
- package/bundled-skills/gitlab-ci/SKILL.md +340 -0
- package/bundled-skills/google-no-code/SKILL.md +136 -0
- package/bundled-skills/gpu-kubernetes-operations/SKILL.md +468 -0
- package/bundled-skills/gpu-server-management/SKILL.md +236 -0
- package/bundled-skills/hashicorp-vault/SKILL.md +408 -0
- package/bundled-skills/helm-charts/SKILL.md +469 -0
- package/bundled-skills/hipaa-compliance/SKILL.md +451 -0
- package/bundled-skills/hunt-aspnet/SKILL.md +321 -0
- package/bundled-skills/hunt-ato/SKILL.md +184 -0
- package/bundled-skills/hunt-auth-bypass/SKILL.md +426 -0
- package/bundled-skills/hunt-auth-bypass/references/details.md +80 -0
- package/bundled-skills/hunt-brute-force/SKILL.md +341 -0
- package/bundled-skills/hunt-business-logic/SKILL.md +281 -0
- package/bundled-skills/hunt-cache-poison/SKILL.md +382 -0
- package/bundled-skills/hunt-captcha-bypass/SKILL.md +136 -0
- package/bundled-skills/hunt-cicd/SKILL.md +311 -0
- package/bundled-skills/hunt-clickjacking/SKILL.md +110 -0
- package/bundled-skills/hunt-cors/SKILL.md +335 -0
- package/bundled-skills/hunt-dom/SKILL.md +323 -0
- package/bundled-skills/hunt-exceptional-conditions/SKILL.md +111 -0
- package/bundled-skills/hunt-file-upload/SKILL.md +202 -0
- package/bundled-skills/hunt-fintech-graphql/SKILL.md +289 -0
- package/bundled-skills/hunt-forgot-password/SKILL.md +114 -0
- package/bundled-skills/hunt-grpc/SKILL.md +317 -0
- package/bundled-skills/hunt-host-header/SKILL.md +309 -0
- package/bundled-skills/hunt-html-injection/SKILL.md +106 -0
- package/bundled-skills/hunt-http-smuggling/SKILL.md +129 -0
- package/bundled-skills/hunt-http-smuggling/references/phase2h-smuggling-cachepoison.md +177 -0
- package/bundled-skills/hunt-idor/SKILL.md +434 -0
- package/bundled-skills/hunt-jwt-crypto/SKILL.md +221 -0
- package/bundled-skills/hunt-k8s/SKILL.md +337 -0
- package/bundled-skills/hunt-laravel/SKILL.md +255 -0
- package/bundled-skills/hunt-ldap/SKILL.md +351 -0
- package/bundled-skills/hunt-lfi/SKILL.md +311 -0
- package/bundled-skills/hunt-llm-ai/SKILL.md +289 -0
- package/bundled-skills/hunt-mfa-bypass/SKILL.md +177 -0
- package/bundled-skills/hunt-misc/SKILL.md +378 -0
- package/bundled-skills/hunt-nextjs/SKILL.md +299 -0
- package/bundled-skills/hunt-nodejs/SKILL.md +263 -0
- package/bundled-skills/hunt-nosqli/SKILL.md +210 -0
- package/bundled-skills/hunt-ntlm-info/SKILL.md +314 -0
- package/bundled-skills/hunt-oauth/SKILL.md +459 -0
- package/bundled-skills/hunt-open-redirect/SKILL.md +223 -0
- package/bundled-skills/hunt-race-condition/SKILL.md +381 -0
- package/bundled-skills/hunt-race-condition/references/details.md +159 -0
- package/bundled-skills/hunt-rag-vector/SKILL.md +212 -0
- package/bundled-skills/hunt-rce/SKILL.md +444 -0
- package/bundled-skills/hunt-rce/references/details.md +110 -0
- package/bundled-skills/hunt-saml/SKILL.md +156 -0
- package/bundled-skills/hunt-session/SKILL.md +342 -0
- package/bundled-skills/hunt-shadow-api/SKILL.md +198 -0
- package/bundled-skills/hunt-source-leak/SKILL.md +345 -0
- package/bundled-skills/hunt-spa-api/SKILL.md +163 -0
- package/bundled-skills/hunt-springboot/SKILL.md +285 -0
- package/bundled-skills/hunt-sqli/SKILL.md +466 -0
- package/bundled-skills/hunt-ssrf/SKILL.md +396 -0
- package/bundled-skills/hunt-ssrf/references/details.md +179 -0
- package/bundled-skills/hunt-ssti/SKILL.md +163 -0
- package/bundled-skills/hunt-subdomain/SKILL.md +379 -0
- package/bundled-skills/hunt-tls-network/SKILL.md +399 -0
- package/bundled-skills/hunt-xxe/SKILL.md +466 -0
- package/bundled-skills/i-have-adhd/SKILL.md +170 -0
- package/bundled-skills/idea-evaluator/SKILL.md +75 -0
- package/bundled-skills/idea-evaluator/idea-evaluator-con/SKILL.md +64 -0
- package/bundled-skills/idea-evaluator/idea-evaluator-pro/SKILL.md +64 -0
- package/bundled-skills/identity-access-management/SKILL.md +382 -0
- package/bundled-skills/identity-access-management/references/details.md +524 -0
- package/bundled-skills/incident-management/SKILL.md +484 -0
- package/bundled-skills/incident-response/SKILL.md +448 -0
- package/bundled-skills/incident-response/references/details.md +113 -0
- package/bundled-skills/interview-me/SKILL.md +248 -0
- package/bundled-skills/iso27001-compliance/SKILL.md +460 -0
- package/bundled-skills/jenkins/SKILL.md +462 -0
- package/bundled-skills/jev-use/SKILL.md +158 -0
- package/bundled-skills/kubernetes-hardening/SKILL.md +154 -0
- package/bundled-skills/kubernetes-ops/SKILL.md +449 -0
- package/bundled-skills/kubernetes-ops/references/details.md +108 -0
- package/bundled-skills/kustomize/SKILL.md +478 -0
- package/bundled-skills/ledger-tasks-yylo/SKILL.md +219 -0
- package/bundled-skills/linux-administration/SKILL.md +367 -0
- package/bundled-skills/linux-hardening/SKILL.md +154 -0
- package/bundled-skills/llm-app-security/SKILL.md +389 -0
- package/bundled-skills/llm-app-security/references/details.md +674 -0
- package/bundled-skills/llm-caching/SKILL.md +334 -0
- package/bundled-skills/llm-cost-optimization/SKILL.md +311 -0
- package/bundled-skills/llm-fine-tuning/SKILL.md +329 -0
- package/bundled-skills/llm-gateway/SKILL.md +282 -0
- package/bundled-skills/llm-inference-scaling/SKILL.md +286 -0
- package/bundled-skills/llmops-platform-engineering/SKILL.md +472 -0
- package/bundled-skills/load-balancing/SKILL.md +403 -0
- package/bundled-skills/loki-logging/SKILL.md +479 -0
- package/bundled-skills/loki-mode/examples/todo-app-generated/backend/package-lock.json +4 -4
- package/bundled-skills/loki-mode/examples/todo-app-generated/backend/package.json +1 -1
- package/bundled-skills/m365-entra-attack/SKILL.md +423 -0
- package/bundled-skills/mac-mini-llm-lab/SKILL.md +350 -0
- package/bundled-skills/mcp-server-security/SKILL.md +356 -0
- package/bundled-skills/mcp-server-security/references/details.md +745 -0
- package/bundled-skills/mdm-device-management/SKILL.md +404 -0
- package/bundled-skills/mdm-device-management/references/details.md +410 -0
- package/bundled-skills/meme-coin-audit/SKILL.md +402 -0
- package/bundled-skills/mid-engagement-ir-detection/SKILL.md +377 -0
- package/bundled-skills/model-registry-governance/SKILL.md +452 -0
- package/bundled-skills/model-serving-kubernetes/SKILL.md +339 -0
- package/bundled-skills/model-supply-chain-security/SKILL.md +427 -0
- package/bundled-skills/mongodb/SKILL.md +436 -0
- package/bundled-skills/multi-tenant-llm-hosting/SKILL.md +435 -0
- package/bundled-skills/multi-tenant-llm-hosting/references/details.md +211 -0
- package/bundled-skills/mysql/SKILL.md +390 -0
- package/bundled-skills/new-relic/SKILL.md +472 -0
- package/bundled-skills/nfs-storage/SKILL.md +356 -0
- package/bundled-skills/object-storage/SKILL.md +378 -0
- package/bundled-skills/offensive-osint/SKILL.md +443 -0
- package/bundled-skills/okta-attack/SKILL.md +436 -0
- package/bundled-skills/ollama-stack/SKILL.md +379 -0
- package/bundled-skills/openclaw-deployment-hardening/SKILL.md +135 -0
- package/bundled-skills/openclaw-local-mac-mini/SKILL.md +426 -0
- package/bundled-skills/openclaw-local-mac-mini/references/details.md +221 -0
- package/bundled-skills/openclaw-security-hardening/SKILL.md +135 -0
- package/bundled-skills/openshift/SKILL.md +485 -0
- package/bundled-skills/opentelemetry/SKILL.md +438 -0
- package/bundled-skills/opentelemetry/references/details.md +78 -0
- package/bundled-skills/opentofu-migration/SKILL.md +349 -0
- package/bundled-skills/osint-methodology/SKILL.md +460 -0
- package/bundled-skills/osint-methodology/references/details.md +1350 -0
- package/bundled-skills/pci-dss-compliance/SKILL.md +446 -0
- package/bundled-skills/penetration-testing/SKILL.md +152 -0
- package/bundled-skills/performance-tuning/SKILL.md +381 -0
- package/bundled-skills/plan-ledger-tasks-yylo/SKILL.md +52 -0
- package/bundled-skills/planetscale/SKILL.md +297 -0
- package/bundled-skills/platform-engineering/SKILL.md +348 -0
- package/bundled-skills/platform-engineering/references/details.md +944 -0
- package/bundled-skills/podman/SKILL.md +405 -0
- package/bundled-skills/policy-as-code/SKILL.md +434 -0
- package/bundled-skills/policy-as-code/references/details.md +204 -0
- package/bundled-skills/postgresql-devsec/SKILL.md +378 -0
- package/bundled-skills/prometheus-grafana/SKILL.md +469 -0
- package/bundled-skills/prompt-injection-defense/SKILL.md +483 -0
- package/bundled-skills/rag-infrastructure/SKILL.md +269 -0
- package/bundled-skills/rag-observability-evals/SKILL.md +444 -0
- package/bundled-skills/rag-observability-evals/references/details.md +92 -0
- package/bundled-skills/ralph-loop-yylo/SKILL.md +55 -0
- package/bundled-skills/ralph-loop-yylo/references/first_check.md +18 -0
- package/bundled-skills/ralph-loop-yylo/references/implement.md +60 -0
- package/bundled-skills/recon-scope-triage/SKILL.md +128 -0
- package/bundled-skills/redis/SKILL.md +421 -0
- package/bundled-skills/redteam-report-template/SKILL.md +370 -0
- package/bundled-skills/report-writing/SKILL.md +426 -0
- package/bundled-skills/report-writing/references/details.md +187 -0
- package/bundled-skills/resumable-implementation-contracts/SKILL.md +254 -0
- package/bundled-skills/reverse-proxy/SKILL.md +420 -0
- package/bundled-skills/runbook-creation/SKILL.md +438 -0
- package/bundled-skills/runbook-creation/references/details.md +71 -0
- package/bundled-skills/saas-security-posture/SKILL.md +415 -0
- package/bundled-skills/sast-scanning/SKILL.md +444 -0
- package/bundled-skills/sbom-supply-chain/SKILL.md +433 -0
- package/bundled-skills/security-arsenal/SKILL.md +446 -0
- package/bundled-skills/security-arsenal/references/details.md +540 -0
- package/bundled-skills/security-automation/SKILL.md +146 -0
- package/bundled-skills/semantic-versioning/SKILL.md +434 -0
- package/bundled-skills/semantic-versioning/references/details.md +83 -0
- package/bundled-skills/service-mesh/SKILL.md +422 -0
- package/bundled-skills/soc2-compliance/SKILL.md +409 -0
- package/bundled-skills/sops-encryption/SKILL.md +124 -0
- package/bundled-skills/sre-dashboards/SKILL.md +143 -0
- package/bundled-skills/ssh-configuration/SKILL.md +324 -0
- package/bundled-skills/ssl-tls-management/SKILL.md +428 -0
- package/bundled-skills/ssl-tls-management/references/details.md +99 -0
- package/bundled-skills/startup-it-troubleshooting/SKILL.md +415 -0
- package/bundled-skills/supply-chain-attack-recon/SKILL.md +453 -0
- package/bundled-skills/supply-chain-attack-recon/references/details.md +258 -0
- package/bundled-skills/systemd-services/SKILL.md +379 -0
- package/bundled-skills/terraform-aws/SKILL.md +125 -0
- package/bundled-skills/terraform-azure/SKILL.md +415 -0
- package/bundled-skills/terraform-azure/references/details.md +231 -0
- package/bundled-skills/terraform-gcp/SKILL.md +369 -0
- package/bundled-skills/threat-modeling/SKILL.md +487 -0
- package/bundled-skills/understand-project-yylo/SKILL.md +62 -0
- package/bundled-skills/user-management/SKILL.md +383 -0
- package/bundled-skills/using-agent-skills/SKILL.md +220 -0
- package/bundled-skills/vector-database-ops/SKILL.md +300 -0
- package/bundled-skills/vendor-management/SKILL.md +439 -0
- package/bundled-skills/vendor-management/references/details.md +109 -0
- package/bundled-skills/vercel-deployments/SKILL.md +296 -0
- package/bundled-skills/vllm-server/SKILL.md +236 -0
- package/bundled-skills/vmware-vcenter-attack/SKILL.md +412 -0
- package/bundled-skills/vpn-setup/SKILL.md +452 -0
- package/bundled-skills/vulnerability-scanning/SKILL.md +448 -0
- package/bundled-skills/waf-setup/SKILL.md +354 -0
- package/bundled-skills/waf-setup/references/details.md +211 -0
- package/bundled-skills/weather-model-data-fetching/SKILL.md +277 -0
- package/bundled-skills/weather-observation-fetching/SKILL.md +246 -0
- package/bundled-skills/web2-recon/SKILL.md +440 -0
- package/bundled-skills/web2-recon/references/details.md +319 -0
- package/bundled-skills/web3-audit/SKILL.md +445 -0
- package/bundled-skills/web3-audit/references/details.md +224 -0
- package/bundled-skills/wiki-yylo/SKILL.md +114 -0
- package/bundled-skills/windows-hardening/SKILL.md +454 -0
- package/bundled-skills/windows-hardening/references/details.md +204 -0
- package/bundled-skills/windows-server/SKILL.md +318 -0
- package/bundled-skills/workflow-yylo/SKILL.md +107 -0
- package/bundled-skills/zero-trust/SKILL.md +461 -0
- package/package.json +1 -1
- package/skills_index.json +6924 -0
|
@@ -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.
|