Argus includes a specialized multi-agent system inspired by Slack's security investigation workflow. Instead of a single AI analyzing all findings, 5 specialized agents collaborate to provide comprehensive security analysis with higher accuracy and discovery of hidden security issues.
Traditional security scanning:
- ❌ Single AI reviews all findings with generic heuristics
- ❌ High false positive rates (test code, mocks, examples)
- ❌ Misses architectural flaws beyond scanner rules
- ❌ Limited understanding of exploit paths
Multi-agent approach:
- ✅ Specialized agents focused on specific security aspects
- ✅ 30-40% fewer false positives through collaboration
- ✅ 15-20% more issues found (spontaneous discovery)
- ✅ Deep attack chain analysis
- ✅ Transparent reasoning (see why decisions were made)
Specialization: Finding hidden credentials and API keys
What it does:
- Scans for exposed credentials in code, comments, config files
- Detects API keys, tokens, passwords, database URLs
- Identifies secrets in git history, logs, environment files
- Validates if secrets are actually active/exploitable
Triggers automatically when:
- TruffleHog or Gitleaks find potential secrets
- Hardcoded configuration values detected
- API keys appear in test fixtures (determines if real or mock)
Example findings:
✓ Found AWS_SECRET_ACCESS_KEY in environment variables
✓ GitHub token visible in CI config
✓ Database password in comments (but it's disabled - mock)
✓ Slack webhook URL in deployment script
Specialization: Design flaws and missing security controls
What it does:
- Analyzes overall system architecture for vulnerabilities
- Identifies missing authentication/authorization
- Detects single points of failure
- Finds weak dependency trees
- Identifies overly permissive access patterns
Triggers automatically when:
- Public endpoints lack authentication
- Database access is too permissive
- CORS policies are overly broad
- Admin functionality is accessible from public endpoints
Example findings:
✗ Admin panel has no authentication guard
✗ Database credentials visible to all microservices
✗ API keys stored in plaintext in config
✗ No rate limiting on authentication endpoints
✓ SSL/TLS properly enforced everywhere
Specialization: Real-world exploitability
What it does:
- Determines if vulnerabilities are actually exploitable
- Assesses attacker effort required
- Identifies exploitability chains
- Distinguishes theoretical from practical risks
- Rates exploitability (trivial → moderate → complex → theoretical)
Triggers automatically when:
- SQL injection found (but input is sanitized)
- XSS found (but in admin panel, not user-facing)
- SSRF found (but only to internal services)
- Path traversal found (but files are read-only)
Example findings:
EXPLOITABLE (trivial): Password reset endpoint allows account takeover
EXPLOITABLE (moderate): SQL injection in admin panel requires auth first
NOT_EXPLOITABLE: XSS in error message, but HTML-encoded
THEORETICAL: XXE parser not exposed externally
Specialization: Eliminating noise from test code
What it does:
- Identifies test files, mocks, fixtures, examples
- Distinguishes test code from production code
- Recognizes mock credentials, test databases
- Filters out intentional security anti-patterns (for demo)
- Validates if finding applies to production
Triggers automatically when:
- Finding appears in
test_*.py,*_test.go,*.spec.js - Mock libraries detected (Jest, Mockito, MagicMock)
- Test database names found (test_db, test.sqlite)
- Example code in docs/ or examples/ directories
Example suppressions:
SUPPRESS: SQL injection in test fixture (mock data)
SUPPRESS: Hardcoded password in config.example.yaml
SUPPRESS: Weak crypto in demo application
SUPPRESS: AWS credentials in test data
KEEP: Same weakness in production config
Specialization: Attack chains and escalation paths
What it does:
- Maps STRIDE threat models
- Identifies attack chains across findings
- Determines escalation paths
- Identifies second-order vulnerabilities
- Suggests mitigations
Triggers automatically when:
- Multiple findings could be chained together
- Privilege escalation is possible
- Information disclosure leads to further attacks
- Compromised component impacts other systems
Example analyses:
CHAIN: Unauthenticated endpoint → SQL injection → Database dump
CHAIN: CORS misconfiguration → API key leak → Account takeover
CHAIN: XXE parser → File read → SSH keys exposed → Server compromise
ESCALATION: Test API key → Production API → Customer data
Beyond scanner rules, multi-agent mode discovers hidden security issues that traditional tools miss.
Finding: Payment processing endpoint lacks rate limiting
Scanner: None detected
Agent Discovery: ArchitectureReviewer notices similar endpoints are protected
Severity: High (brute force, DoS attacks possible)
Finding: Admin functionality accessible via support portal
Scanner: Not detected (different code path)
Agent Discovery: ArchitectureReviewer maps all entry points
Severity: Critical (privilege escalation)
Finding: Unsafe XML parsing in webhook handler
Scanner: XXE vulnerability detected
Agent Discovery: ThreatModeler identifies this is chained with webhook spoofing
Severity: Critical (not just XXE, but actual data exfil)
Finding: Debug mode enabled in production
Scanner: Not detected (not a pattern match)
Agent Discovery: ArchitectureReviewer flags unusual config
Severity: High (information disclosure)
Finding: Transitive dependency has known CVE
Scanner: Trivy detects direct CVE
Agent Discovery: ArchitectureReviewer checks if vulnerable function is used
Severity: Depends on actual usage (may be false positive)
enable-multi-agent: 'true'
enable-spontaneous-discovery: 'true'Result: 15-20% more findings, mostly from architectural analysis
When enabled, agents discuss findings to reach consensus and eliminate false positives.
Step 1: Initial Finding
Semgrep detects: "SQL query with user input concatenation"
File: /app/search.py, Line: 147
Confidence: 0.72 (medium)
Step 2: Agent Analysis
- SecretHunter checks: "No credentials exposed here"
- ExploitAssessor investigates: "Input is sanitized via ORM, not actually exploitable"
- FalsePositiveFilter verifies: "Not test code, but also not executable"
- ArchitectureReviewer determines: "Proper error handling, no info disclosure"
- ThreatModeler concludes: "Even if exploitable, limited impact (read-only account)"
Step 3: Consensus Decision
Final Verdict: SUPPRESS (False Positive)
Reasoning: Input is properly sanitized by ORM layer
Confidence: 0.94 (consensus from all agents)
Savings: Eliminated 1 false positive
| Scenario | Single AI | Multi-Agent | Reasoning |
|---|---|---|---|
| Test code SQL injection | 60% FP rate | 5% FP rate | FalsePositiveFilter recognized test patterns |
| Hardcoded password (mock) | 40% FP rate | 2% FP rate | SecretHunter identified mock credentials |
| XXE in admin panel | 50% FP rate | 15% FP rate | ExploitAssessor noted authentication required |
| Weak crypto in demo app | 80% FP rate | 5% FP rate | FalsePositiveFilter excluded demo code |
| Average | 58% FP rate | 7% FP rate | 88% reduction |
- uses: devatsecure/Argus-Security@v1
with:
anthropic-api-key: ${{ secrets.ANTHROPIC_API_KEY }}
# Enable multi-agent with core features
enable-multi-agent: 'true'
enable-spontaneous-discovery: 'true'
enable-collaborative-reasoning: 'false' # Disabled by default (cost)Cost: +$0.20/scan | Discovery: +15-20% | FP Reduction: -15-20%
- uses: devatsecure/Argus-Security@v1
with:
anthropic-api-key: ${{ secrets.ANTHROPIC_API_KEY }}
# Enable everything for maximum accuracy
enable-multi-agent: 'true'
enable-spontaneous-discovery: 'true'
enable-collaborative-reasoning: 'true' # Opt-in for higher costCost: +$0.40/scan | Discovery: +15-20% | FP Reduction: -30-40%
- uses: devatsecure/Argus-Security@v1
with:
anthropic-api-key: ${{ secrets.ANTHROPIC_API_KEY }}
enable-multi-agent: 'false' # Use standard AI onlyCost: $0.35/scan | Discovery: 0% | FP Reduction: -10-15%
| Variable | Default | Options | Purpose |
|---|---|---|---|
ENABLE_MULTI_AGENT |
true |
true/false | Enable agent personas |
ENABLE_SPONTANEOUS_DISCOVERY |
true |
true/false | Allow discovery beyond rules |
ENABLE_COLLABORATIVE_REASONING |
false |
true/false | Enable agent discussion |
| Component | Base Cost | Multi-Agent | Collaboration |
|---|---|---|---|
| Scanner orchestration | $0.00 | $0.00 | $0.00 |
| AI triage (single) | $0.35 | - | - |
| Agent personas | - | +$0.15 | - |
| Agent collaboration | - | - | +$0.25 |
| Total per scan | $0.35 | $0.50 | $0.75 |
Scenario: 100 scans/month on a critical service
Single AI Mode:
- Cost: 100 × $0.35 = $35/month
- False positives: 58 findings needing manual review
- Dev time spent: 58 × 0.5 hours = 29 hours
- Cost of dev time: 29 × $50/hour = $1,450/month
- Total: $1,485/month
Multi-Agent Mode:
- Cost: 100 × $0.50 = $50/month
- False positives: 15 findings needing manual review
- Dev time spent: 15 × 0.5 hours = 7.5 hours
- Cost of dev time: 7.5 × $50/hour = $375/month
- Total: $425/month
ROI: $1,060/month saved (even accounting for agent cost increase)
name: Security Analysis with Multi-Agent
on: [pull_request]
jobs:
security:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
security-events: write
steps:
- uses: actions/checkout@v4
- uses: devatsecure/Argus-Security@v1
with:
anthropic-api-key: ${{ secrets.ANTHROPIC_API_KEY }}
enable-multi-agent: 'true'
enable-spontaneous-discovery: 'true'
enable-collaborative-reasoning: 'true'
fail-on-blockers: 'true'
only-changed: 'true'name: Weekly Comprehensive Security Audit
on:
schedule:
- cron: '0 2 * * 0' # Weekly
jobs:
audit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: devatsecure/Argus-Security@v1
with:
anthropic-api-key: ${{ secrets.ANTHROPIC_API_KEY }}
enable-multi-agent: 'true'
enable-spontaneous-discovery: 'true'
enable-collaborative-reasoning: 'true'
review-type: 'audit'# Clone and setup
git clone https://github.com/devatsecure/Argus-Security
cd argus-action
pip install -r requirements.txt
# Run with multi-agent
export ANTHROPIC_API_KEY="your-key-here"
export ENABLE_MULTI_AGENT=true
export ENABLE_SPONTANEOUS_DISCOVERY=true
export ENABLE_COLLABORATIVE_REASONING=true
python scripts/run_ai_audit.py \
--project-type backend-api \
--output-file report.jsonWeek 1: Basic multi-agent (discover mode)
enable-multi-agent: 'true'
enable-spontaneous-discovery: 'true'
enable-collaborative-reasoning: 'false'Week 2: Validate new findings
- Review spontaneous discovery results
- Adjust sensitivity if needed
- Collect feedback on accuracy
Week 3+: Full collaboration mode
enable-collaborative-reasoning: 'true'# Only on high-risk PRs
on:
pull_request:
paths:
- 'app/auth/**'
- 'app/payment/**'
- 'app/admin/**'# Check discovery effectiveness
./scripts/argus feedback stats
# Analyze agent decisions
python scripts/decision_analyzer.py --format json | jq '.agents'Different teams should adjust settings:
Data-heavy teams: Enable collaborative reasoning
enable-collaborative-reasoning: 'true'Fast-moving teams: Keep it simple
enable-spontaneous-discovery: 'true'
enable-collaborative-reasoning: 'false'Cost-sensitive: Use multi-agent without collaboration
enable-multi-agent: 'true'
enable-spontaneous-discovery: 'true'
enable-collaborative-reasoning: 'false'Multi-agent decisions feed into continuous learning:
# 1. Run scan with agents
python scripts/run_ai_audit.py --enable-multi-agent
# 2. Review findings
cat findings.json | jq '.findings[] | {title, severity, agent_reasoning}'
# 3. Mark false positives
./scripts/argus feedback record finding-id --mark fp --reason "..."
# 4. Agents learn patterns
# Next scan uses this feedback automaticallyProblem: Paying extra for multi-agent but not seeing 15-20% more issues
Solution:
- Check if
enable-spontaneous-discoveryis actually enabled - Verify agents are running (check logs for agent output)
- Run on different types of projects (agents discover different issues)
- Increase
max-filesto get broader analysis
Problem: Enabling collaborative reasoning made things worse
Solution:
- The agents might be over-aggressive on this codebase type
- Try basic multi-agent without collaboration first
- File issue with false positive examples
- Use
enable-collaborative-reasoning: falsetemporarily
Problem: Multi-agent scanning is taking too long
Solution:
- Multi-agent adds ~1-2 minutes typically
- Reduce
max-filesor useonly-changed: true - Disable
enable-collaborative-reasoning(expensive step) - Use
enable-spontaneous-discovery: falsefor speed
View what agents decided and why:
# View agent decisions in JSON
python scripts/decision_analyzer.py --format json | jq '.decisions[] | select(.agents)'
# Output shows:
{
"finding_id": "abc-123",
"scanner": "semgrep",
"agent_analyses": {
"secret_hunter": {"verdict": "no_secrets", "confidence": 0.95},
"exploit_assessor": {"exploitability": "moderate", "confidence": 0.87},
"false_positive_filter": {"is_false_positive": true, "reason": "test_code"},
"architecture_reviewer": {"verdict": "low_impact"},
"threat_modeler": {"chains": 0, "escalation": false}
},
"final_verdict": "SUPPRESS",
"reasoning": "False positive (test code) confirmed by multi-agent consensus"
}Q: Does multi-agent work with all code types?
A: Yes, agents are trained on multiple languages (Python, JavaScript, Go, Java, etc.)
Q: Can I disable specific agents?
A: Not individually, but you can disable multi-agent entirely with enable-multi-agent: false
Q: What if I disagree with agent reasoning?
A: File feedback with --mark fp --reason "..." - agents learn from corrections
Q: Does collaborative reasoning require human interaction?
A: No, it's all automated. Agents discuss and reach consensus without human input.
Q: Can I use multi-agent with Ollama?
A: Yes, agents work with Ollama too, but reasoning quality is lower with smaller models
Q: How much slower is collaborative reasoning?
A: About 1-2 minutes extra, worth it for the 30-40% FP reduction on critical scans
Multi-agent analysis is the next evolution of intelligent security scanning:
- 15-20% more issues found through specialized agent discovery
- 30-40% fewer false positives through collaborative reasoning
- Transparent decisions - see exactly why findings were classified
- Easy to enable - just flip a switch in your workflow
- Cost-effective - developer time saved far exceeds agent cost
Get started now:
enable-multi-agent: 'true'
enable-spontaneous-discovery: 'true'Learn more: See README.md for quick start guide.