AI Security Analyst building the security layer for AI agents, LLM applications, and multi-agent systems.
- AI red-teaming: LLM vulnerability assessment, probe development
- MCP / agentic security: Model Context Protocol scanning, tool-use safety
- LLM guardrails: content safety policy enforcement
- DevSecOps: SAST rules, supply-chain and dependency security
18 pull requests merged by project maintainers across 7 open-source projects. 84 pull requests open and under review. (Counts verified against GitHub, October 2026.)
| Repository | PR | Work |
|---|---|---|
| langflow-ai/langflow | #14502 | Replace eval() with safe literal construction in schema.py |
| thedotmack/claude-mem | #4777 | Verify the tree-sitter CLI loads, not just exists |
| JustVugg/colibri | #2103 | Fix COLI_KV_SHARE cross-slot adoption under KV8/KV_TQ |
| promptfoo/promptfoo | #10494 | Tag RAG grader failures so inverse assertions cannot pass |
| aws-cloudformation/cfn-lint | #4781 | Require at least one resource in the Resources section (E1001) |
| aws-cloudformation/cfn-lint | #4782 | Stringify E3601 path segments so array indices do not crash message formatting |
| aws-cloudformation/cfn-lint | #4786 | Do not crash when a resource or output condition can never be true |
| aws-cloudformation/cfn-lint | #4787 | Stop E8001 rejecting condition names CloudFormation accepts |
| aws-cloudformation/cfn-lint | #4793 | Allow Fn::If and nested Fn::Select as the Fn::Select index |
| aws-cloudformation/cfn-lint | #4814 | Report non-string condition names instead of crashing (E8001) |
| aws-cloudformation/cfn-lint | #4828 | Accept resolve:ssm: ImageId on AWS::EC2::Instance (E1152) |
| aws-cloudformation/cfn-lint | #4830 | Accept neptune and sqlserver-dev engines in E3690/E3691 |
| cisco-ai-defense/mcp-scanner | #244 | Bound wildcard gaps in coercive_injection and credential_harvesting YARA rules |
| cisco-ai-defense/mcp-scanner | #276 | Bind only/must gaps in coercive_injection execution overrides to clause boundaries |
| cisco-ai-defense/mcp-scanner | #283 | Remove local import os that shadowed the module import in main() |
| kestra-io/blueprints | #3326 | AI agent output safety gate with secrets and PII detection plus LLM-judged triage |
| kestra-io/blueprints | #4353 | AI agent input firewall against prompt injection |
| kestra-io/blueprints | #4360 | AI agent red-team probe harness |
| Repository | Work | Status |
|---|---|---|
| NVIDIA/garak #1974 | AART probe for AI-assisted red-teaming | Open |
| BerriAI/litellm #47846 | JWKS stale-while-revalidate refresh for JWT validation | Open |
| promptfoo/promptfoo #11832 | Bounded redirect fetching with guaranteed body cancellation | Open |
| delphisecurity/xaidr #44 | Fix ANSI-C quoting bypass in command scanning (self-found, disclosed to the maintainers first) | Open |
| GitGuardian/ggshield #1562 | Local hook directory anchoring | Open |
| guardrails-ai/guardrails #1666 | Hub auth token expiry hardening | Open |
| trailofbits/mcp-context-protector #56 | Typed exception hierarchy | Open |
Languages: Python, TypeScript, SQL Security: Garak, Semgrep, Bandit, OWASP Top 10 for LLM & Agentic AI AI/Infra: LangChain, FastAPI, Docker, GitHub Actions, CI/CD
Open to collaboration on AI security tooling, MCP security research, and multi-agent system hardening.


