# Security Audit Report — abs

- **Report ID:** `07f99f83-698f-4355-946f-60c5b86d99c7`
- **Generated:** 2026-08-12T11:25:27.009389+00:00
- **Signature:** unsigned (cosign keyless signing runs in CI; Req 22.4)

## 1. Executive Summary

**Badge:** Unsafe (composite)  
**Security score:** n/a

| Scanner | Badge |
| --- | --- |
| agent-audit-kit | Unsafe |
| agentshield | Verified |
| bearer | Unsafe |
| capslock | not_applicable |
| cisco-skill-scanner | Unsafe |
| nerlo-behavioral | Unsafe |
| nerlo-install-instruction | Unsafe |

| Severity | Findings |
| --- | --- |
| critical | 58 |
| high | 94 |
| medium | 105 |
| low | 25 |
| informational | 206 |

abs is NOT recommended for integration: the scan surfaced 58 critical and 94 high-severity findings. Treat the Per-Scanner Detail section as a remediation worklist and re-scan before reconsidering.

## 2. Source Provenance

- **Repository:** https://github.com/automatiabcn/abs
- **Commit scanned:** `unknown`
- **License:** unknown
- **Maintainer:** unknown
- **Version:** unknown

## 3. Per-Scanner Detail

### agentshield (v1.4.0) — Verified / 100.0

No findings.

### cisco-skill-scanner (v2.0.11) — Unsafe / 0.0

- **[informational] Moderate analyzability score** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Only 82% of skill content could be analyzed. 325 of 1703 files are opaque to the scanner. Some content could not be verified as safe. (/repo:None)
- **[low] Skill package contains many files** — Skill package contains 1703 files. Large file counts increase attack surface and may indicate bundled dependencies or unnecessary content. (/repo/.:None)
- **[low] Hidden data file detected** — Hidden file found: .env.demo. Hidden files may contain concealed configuration or data that should be reviewed. (/repo/.env.demo:None)
- **[low] Hidden data file detected** — Hidden file found: .fs-scan-allowlist.yaml. Hidden files may contain concealed configuration or data that should be reviewed. (/repo/.fs-scan-allowlist.yaml:None)
- **[medium] Undeclared network usage** — Skill code uses network libraries but doesn't declare network requirement (/repo/repo/CHANGELOG.md:None)
- **[medium] Remote fetch followed by execution** — Content is downloaded from the network and subsequently executed. This is a classic remote code execution attack pattern. (found in documentation — may be instructional) (/repo/README.es.md:14)
- **[medium] Remote fetch followed by execution** — Content is downloaded from the network and subsequently executed. This is a classic remote code execution attack pattern. (found in documentation — may be instructional) (/repo/README.md:51)
- **[medium] Remote fetch followed by execution** — Content is downloaded from the network and subsequently executed. This is a classic remote code execution attack pattern. (found in documentation — may be instructional) (/repo/README.tr.md:14)
- **[informational] Vague skill description** — [mcp_server policy: capability-matches-purpose class; severity low -> informational] Skill description is too short (16 chars). Provide detailed explanation. (/repo/SKILL.md:None)
- **[informational] Skill does not specify a license** — Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms. (/repo/SKILL.md:None)
- **[critical] Remote fetch followed by execution** — Content is downloaded from the network and subsequently executed. This is a classic remote code execution attack pattern. (/repo/SKILL.md:599)
- **[critical] Remote fetch followed by execution** — Content is downloaded from the network and subsequently executed. This is a classic remote code execution attack pattern. (/repo/SKILL.md:657)
- **[critical] Remote fetch followed by execution** — Content is downloaded from the network and subsequently executed. This is a classic remote code execution attack pattern. (/repo/SKILL.md:783)
- **[low] Hidden data file detected** — Hidden file found: cerbos/.cerbos.yaml. Hidden files may contain concealed configuration or data that should be reviewed. (/repo/cerbos/.cerbos.yaml:None)
- **[critical] INJECTION ATTACK detected by YARA** — Detects SQL injection attack patterns including keywords, tautologies, and database functions: SELECT name FROM sqlite_master "             "WHERE type='table' AND name='alembic_version' LIMIT 1" (/repo/core/backend/alembic/env.py:74)
- **[critical] INJECTION ATTACK detected by YARA** — Detects SQL injection attack patterns including keywords, tautologies, and database functions: SELECT 1 FROM information_schema (/repo/core/backend/alembic/env.py:79)
- **[medium] CODE EXECUTION detected by YARA** — Detects dangerous code execution patterns with untrusted input in agent skills: HTTPException(413, "settings_payload_too_large")     with Session(get_engine()) as db:         row = (/repo/core/backend/app/api/admin/settings_store.py:89)
- **[medium] File extension does not match actual content type** — File 'account_delete_confirm_en.html' extension (.html) suggests one format but Magika detected a different text format: Jinja template (jinja). This may indicate content obfuscation or a misnamed file. (/repo/core/backend/app/email/templates/account_delete_confirm_en.html:None)
- **[medium] Turkish role-switch prompt pattern in asset file** — Pattern 'bundan sonra...' detected in asset file (/repo/core/backend/app/email/templates/beta_check_in_tr.html:21)
- **[medium] File extension does not match actual content type** — File 'beta_first_success_es.html' extension (.html) suggests one format but Magika detected a different text format: Twig template (twig). This may indicate content obfuscation or a misnamed file. (/repo/core/backend/app/email/templates/beta_first_success_es.html:None)
- **[medium] File extension does not match actual content type** — File 'beta_renewal_offer_tr.html' extension (.html) suggests one format but Magika detected a different text format: Twig template (twig). This may indicate content obfuscation or a misnamed file. (/repo/core/backend/app/email/templates/beta_renewal_offer_tr.html:None)
- **[medium] Turkish role-switch prompt pattern in asset file** — Pattern 'Bundan sonra...' detected in asset file (/repo/core/backend/app/email/templates/beta_renewal_offer_tr.html:20)
- **[medium] File extension does not match actual content type** — File 'beta_walkthrough_en.html' extension (.html) suggests one format but Magika detected a different text format: Twig template (twig). This may indicate content obfuscation or a misnamed file. (/repo/core/backend/app/email/templates/beta_walkthrough_en.html:None)
- **[medium] File extension does not match actual content type** — File 'beta_welcome_en.html' extension (.html) suggests one format but Magika detected a different text format: Twig template (twig). This may indicate content obfuscation or a misnamed file. (/repo/core/backend/app/email/templates/beta_welcome_en.html:None)
- **[medium] File extension does not match actual content type** — File 'expiry_warning.html' extension (.html) suggests one format but Magika detected a different text format: Twig template (twig). This may indicate content obfuscation or a misnamed file. (/repo/core/backend/app/email/templates/expiry_warning.html:None)
- **[medium] File extension does not match actual content type** — File 'expiry_warning_en.html' extension (.html) suggests one format but Magika detected a different text format: Twig template (twig). This may indicate content obfuscation or a misnamed file. (/repo/core/backend/app/email/templates/expiry_warning_en.html:None)
- **[medium] File extension does not match actual content type** — File 'expiry_warning_es.html' extension (.html) suggests one format but Magika detected a different text format: Jinja template (jinja). This may indicate content obfuscation or a misnamed file. (/repo/core/backend/app/email/templates/expiry_warning_es.html:None)
- **[medium] File extension does not match actual content type** — File 'expiry_warning_tr.html' extension (.html) suggests one format but Magika detected a different text format: Twig template (twig). This may indicate content obfuscation or a misnamed file. (/repo/core/backend/app/email/templates/expiry_warning_tr.html:None)
- **[medium] Turkish role-switch prompt pattern in asset file** — Pattern 'Bundan sonra...' detected in asset file (/repo/core/backend/app/email/templates/first_success.html:16)
- **[medium] Turkish role-switch prompt pattern in asset file** — Pattern 'Bundan sonra...' detected in asset file (/repo/core/backend/app/email/templates/first_success_tr.html:16)
- **[medium] File extension does not match actual content type** — File 'recovery.html' extension (.html) suggests one format but Magika detected a different text format: Twig template (twig). This may indicate content obfuscation or a misnamed file. (/repo/core/backend/app/email/templates/recovery.html:None)
- **[medium] File extension does not match actual content type** — File 'recovery_tr.html' extension (.html) suggests one format but Magika detected a different text format: Twig template (twig). This may indicate content obfuscation or a misnamed file. (/repo/core/backend/app/email/templates/recovery_tr.html:None)
- **[medium] File extension does not match actual content type** — File 'welcome.html' extension (.html) suggests one format but Magika detected a different text format: Twig template (twig). This may indicate content obfuscation or a misnamed file. (/repo/core/backend/app/email/templates/welcome.html:None)
- **[medium] File extension does not match actual content type** — File 'welcome_en.html' extension (.html) suggests one format but Magika detected a different text format: Twig template (twig). This may indicate content obfuscation or a misnamed file. (/repo/core/backend/app/email/templates/welcome_en.html:None)
- **[medium] File extension does not match actual content type** — File 'welcome_tr.html' extension (.html) suggests one format but Magika detected a different text format: Twig template (twig). This may indicate content obfuscation or a misnamed file. (/repo/core/backend/app/email/templates/welcome_tr.html:None)
- **[informational] Outbound network request primitives that can transmit data externally** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: httpx.post( (/repo/core/backend/app/erp/vanna_app.py:147)
- **[high] Infinite loop without clear exit condition** — Pattern detected: while True: (/repo/core/backend/app/main.py:269)
- **[informational] Direct socket connection to external server** — [mcp_server policy: capability-matches-purpose class; severity critical -> informational] Pattern detected: socket.create_connection (/repo/core/backend/app/quality/verifiers/code.py:34)
- **[informational] Outbound network request primitives that can transmit data externally** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: httpx.get( (/repo/core/backend/app/rag/embedding_bge.py:295)
- **[high] Infinite loop without clear exit condition** — Pattern detected: while True: (/repo/core/backend/app/rag/qdrant_client.py:379)
- **[high] Infinite loop without clear exit condition** — Pattern detected: while True: (/repo/core/backend/app/rag/qdrant_client.py:448)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/backend/app/static/setup/assets/setup.js:162)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/backend/app/static/setup/assets/setup.js:265)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/backend/app/static/setup/assets/setup.js:354)
- **[informational] Outbound network request primitives that can transmit data externally** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: requests.get( (/repo/core/backend/app/workflow_v10/approval.py:130)
- **[informational] Outbound network request primitives that can transmit data externally** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: requests.get( (/repo/core/backend/app/workflow_v10/approval.py:153)
- **[medium] Hardcoded password or secret in variable** — Pattern detected: secr**** (/repo/core/backend/tests/conftest.py:42)
- **[informational] Binary file detected in skill package** — Binary file found: core/backend/tests/fixtures/meeting_demo.wav. Binary files cannot be inspected by static analysis. Consider using Python or Bash scripts for transparency. (/repo/core/backend/tests/fixtures/meeting_demo.wav:None)
- **[informational] Outbound network request primitives that can transmit data externally** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: httpx.get( (/repo/core/backend/tests/integration/test_cerbos_live.py:28)
- **[informational] Outbound network request primitives that can transmit data externally** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: httpx.get( (/repo/core/backend/tests/integration/test_qdrant_isolation.py:24)
- **[informational] Outbound network request primitives that can transmit data externally** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: urllib.request.urlopen( (/repo/core/backend/tests/smoke/test_dr_drill.py:57)
- **[medium] Hardcoded password or secret in variable** — Pattern detected: api_**** (/repo/core/backend/tests/test_a_pasted_key_is_the_model_you_paid_for.py:71)
- **[medium] Hardcoded password or secret in variable** — Pattern detected: api_**** (/repo/core/backend/tests/test_a_pasted_key_is_the_model_you_paid_for.py:104)
- **[medium] Hardcoded password or secret in variable** — Pattern detected: api_**** (/repo/core/backend/tests/test_a_pasted_key_is_the_model_you_paid_for.py:138)
- **[medium] Hardcoded password or secret in variable** — Pattern detected: secr**** (/repo/core/backend/tests/test_admin_providers_status.py:91)
- **[critical] INJECTION ATTACK detected by YARA** — Detects command injection patterns in agent skills: shell operators, system commands, and network tools: ;rm -rf / (/repo/core/backend/tests/test_boundary_payload.py:84)
- **[medium] Hardcoded password or secret in variable** — Pattern detected: toke**** (/repo/core/backend/tests/test_delete_token_email_only.py:64)
- **[medium] Hardcoded password or secret in variable** — Pattern detected: pass**** (/repo/core/backend/tests/test_final_acceptance.py:108)
- **[critical] INJECTION ATTACK detected by YARA** — Detects SQL injection attack patterns including keywords, tautologies, and database functions: '; DROP TABLE (/repo/core/backend/tests/test_fuzz.py:105)
- **[medium] Hardcoded password or secret in variable** — Pattern detected: secr**** (/repo/core/backend/tests/test_github_app.py:129)
- **[medium] Hardcoded password or secret in variable** — Pattern detected: secr**** (/repo/core/backend/tests/test_github_app.py:166)
- **[informational] Outbound network request primitives that can transmit data externally** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: urllib.request.Request( (/repo/core/backend/tests/test_mcp_transport_live.py:73)
- **[informational] Outbound network request primitives that can transmit data externally** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: urllib.request.urlopen( (/repo/core/backend/tests/test_mcp_transport_live.py:77)
- **[informational] Outbound network request primitives that can transmit data externally** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: urllib.request.urlopen( (/repo/core/backend/tests/test_mcp_transport_live.py:200)
- **[medium] Hardcoded password or secret in variable** — Pattern detected: secr**** (/repo/core/backend/tests/test_prod_secret_guard.py:58)
- **[medium] Hardcoded password or secret in variable** — Pattern detected: pass**** (/repo/core/backend/tests/test_prod_secret_guard.py:67)
- **[medium] Hardcoded password or secret in variable** — Pattern detected: secr**** (/repo/core/backend/tests/test_provider_save.py:85)
- **[medium] Hardcoded password or secret in variable** — Pattern detected: pass**** (/repo/core/backend/tests/test_setup_wizard_full_sweep.py:117)
- **[medium] Hardcoded password or secret in variable** — Pattern detected: pass**** (/repo/core/backend/tests/test_setup_wizard_full_sweep.py:203)
- **[medium] Hardcoded password or secret in variable** — Pattern detected: pass**** (/repo/core/backend/tests/test_stack_trace_exposure.py:34)
- **[medium] Hardcoded password or secret in variable** — Pattern detected: secr**** (/repo/core/backend/tests/test_sweep2_webhook_signature.py:146)
- **[medium] Hardcoded password or secret in variable** — Pattern detected: pwd **** (/repo/core/backend/tests/test_sweep4_setup_admin.py:212)
- **[critical] Dangerous code execution functions that can execute arbitrary code** — Pattern detected: eval( (/repo/core/backend/tests/test_workflow_conditional.py:4)
- **[informational] Opening sensitive system or credential files** — [mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: open('/etc/passwd (/repo/core/backend/tests/test_workflow_conditional.py:52)
- **[informational] Node.js filesystem access that could read or write sensitive data** — [mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync( (/repo/core/landing/__tests__/ErrorUx.test.ts:15)
- **[informational] Node.js filesystem access that could read or write sensitive data** — [mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync( (/repo/core/landing/__tests__/i18n-scope.test.ts:71)
- **[informational] Node.js filesystem access that could read or write sensitive data** — [mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync( (/repo/core/landing/__tests__/playwright/active-drill.spec.ts:36)
- **[informational] Node.js filesystem access that could read or write sensitive data** — [mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync( (/repo/core/landing/__tests__/playwright/aria-live-deep.spec.ts:46)
- **[informational] Node.js filesystem access that could read or write sensitive data** — [mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync( (/repo/core/landing/__tests__/playwright/chaos-multi.spec.ts:30)
- **[informational] Node.js filesystem access that could read or write sensitive data** — [mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync( (/repo/core/landing/__tests__/playwright/chaos.spec.ts:21)
- **[informational] Node.js filesystem access that could read or write sensitive data** — [mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync( (/repo/core/landing/__tests__/playwright/cold-cache.spec.ts:97)
- **[informational] Node.js filesystem access that could read or write sensitive data** — [mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync( (/repo/core/landing/__tests__/playwright/long-running.spec.ts:53)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/__tests__/playwright/long-running.spec.ts:155)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/__tests__/playwright/long-running.spec.ts:201)
- **[informational] Node.js filesystem access that could read or write sensitive data** — [mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync( (/repo/core/landing/__tests__/playwright/offline-drafts.spec.ts:24)
- **[informational] Node.js filesystem access that could read or write sensitive data** — [mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync( (/repo/core/landing/__tests__/playwright/offline-online-stress.spec.ts:34)
- **[informational] Node.js filesystem access that could read or write sensitive data** — [mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync( (/repo/core/landing/__tests__/playwright/rsc-audit-split-shell.spec.ts:35)
- **[informational] Node.js filesystem access that could read or write sensitive data** — [mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync( (/repo/core/landing/__tests__/playwright/rsc-panel-home-split-shell.spec.ts:34)
- **[informational] Node.js filesystem access that could read or write sensitive data** — [mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync( (/repo/core/landing/__tests__/playwright/rsc-users-split-shell.spec.ts:29)
- **[informational] Node.js filesystem access that could read or write sensitive data** — [mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync( (/repo/core/landing/__tests__/playwright/sw-cache.spec.ts:51)
- **[informational] Node.js filesystem access that could read or write sensitive data** — [mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync( (/repo/core/landing/__tests__/playwright/sw-cache.spec.ts:73)
- **[informational] Node.js filesystem access that could read or write sensitive data** — [mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync( (/repo/core/landing/__tests__/playwright/sw-cache.spec.ts:86)
- **[informational] Node.js filesystem access that could read or write sensitive data** — [mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync( (/repo/core/landing/__tests__/playwright/sw-runtime.spec.ts:33)
- **[informational] Node.js filesystem access that could read or write sensitive data** — [mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync( (/repo/core/landing/__tests__/playwright/throttled.spec.ts:78)
- **[informational] Binary file detected in skill package** — Binary file found: core/landing/__tests__/scenarios/fixtures/spoken-meeting.wav. Binary files cannot be inspected by static analysis. Consider using Python or Bash scripts for transparency. (/repo/core/landing/__tests__/scenarios/fixtures/spoken-meeting.wav:None)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/activate/page.tsx:40)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/audit/AuditClient.tsx:43)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/audit/AuditClient.tsx:127)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/audit/page.tsx:55)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/dashboard/page.tsx:70)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/graph/page.tsx:69)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/graph/page.tsx:82)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/graph/page.tsx:105)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/layout.tsx:39)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/layout.tsx:69)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/marketplace/page.tsx:33)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/marketplace/page.tsx:46)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/mcp-servers/page.tsx:93)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/mcp-servers/page.tsx:122)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/mcp-servers/page.tsx:180)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/mcp-servers/page.tsx:204)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/mcp-tokens/page.tsx:98)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/mcp-tokens/page.tsx:113)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/mcp-tokens/page.tsx:148)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/mcp-tokens/page.tsx:178)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/pipelines/page.tsx:190)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/pipelines/page.tsx:202)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/projects/page.tsx:44)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/provider-keys/page.tsx:52)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/provider-keys/page.tsx:74)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/provider-keys/page.tsx:137)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/providers/page.tsx:50)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/providers/page.tsx:108)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/providers/page.tsx:117)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/rag/page.tsx:113)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/rag/page.tsx:169)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/rag/page.tsx:182)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/rag/page.tsx:191)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/rag/page.tsx:249)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/rag/page.tsx:280)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/rag/page.tsx:335)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/settings/page.tsx:101)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/settings/page.tsx:112)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/settings/page.tsx:127)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/settings/page.tsx:244)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/settings/page.tsx:264)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/settings/page.tsx:471)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/settings/page.tsx:565)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/settings/page.tsx:584)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/settings/page.tsx:675)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/settings/page.tsx:694)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/settings/page.tsx:701)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/usage/UsageClient.tsx:71)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/usage/page.tsx:47)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/users/UsersClient.tsx:51)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/users/UsersClient.tsx:84)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/users/UsersClient.tsx:103)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/users/UsersClient.tsx:129)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/users/UsersClient.tsx:142)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/admin/users/page.tsx:54)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/api/marketplace/install/route.ts:17)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/api/marketplace/plugins/route.ts:36)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/api/onboarding/event/route.ts:25)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/api/workflow/execute/route.ts:17)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/api/workflow/synthesize/route.ts:17)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/auth/magic/page.tsx:39)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/login/page.tsx:46)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/panel/PanelHomeClient.tsx:81)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/panel/account/deletion-status/page.tsx:20)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/panel/account/page.tsx:87)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/panel/agents/page.tsx:56)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/panel/approvals/page.tsx:84)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/panel/approvals/page.tsx:87)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/panel/approvals/page.tsx:108)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/panel/approvals/page.tsx:133)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/panel/connectors/page.tsx:38)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/panel/connectors/page.tsx:81)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/panel/connectors/page.tsx:87)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/panel/connectors/page.tsx:97)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/panel/graph/page.tsx:48)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/panel/graph/page.tsx:58)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/panel/growth/page.tsx:99)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/panel/inbound/page.tsx:34)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/panel/inbound/page.tsx:49)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/panel/layout.tsx:37)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/panel/layout.tsx:53)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/panel/leads/page.tsx:54)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/panel/leads/page.tsx:66)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/panel/leads/page.tsx:78)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/panel/leads/page.tsx:101)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/panel/meetings/[id]/page.tsx:56)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/panel/meetings/page.tsx:134)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/panel/meetings/page.tsx:166)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/panel/meetings/page.tsx:194)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/panel/page.tsx:59)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/panel/quota/page.tsx:179)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/panel/system/page.tsx:47)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/panel/tools/page.tsx:103)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/panel/tools/page.tsx:133)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/panel/transcription/page.tsx:147)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/panel/transcription/page.tsx:201)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/panel/workflows/page.tsx:124)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/panel/workflows/page.tsx:129)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/panel/workflows/page.tsx:136)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/panel/workflows/page.tsx:140)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/panel/workflows/page.tsx:147)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/panel/workflows/page.tsx:152)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/panel/workflows/page.tsx:214)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/panel/workflows/page.tsx:245)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/app/signup/page.tsx:35)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/components/BetaRequestForm.tsx:37)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/components/CheckoutButton.tsx:44)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/components/ConnectPanel.tsx:59)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/components/DeletionStatusBanner.tsx:130)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/components/ManageModal.tsx:64)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/components/MarketplacePanel.tsx:48)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/components/MarketplacePanel.tsx:125)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/components/MarketplacePanel.tsx:153)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/components/admin/ProviderConfigModal.tsx:107)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/components/admin/ProviderConfigModal.tsx:136)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/components/onboarding/analytics.ts:33)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/components/panel/CaptureJobs.tsx:79)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/components/panel/CaptureJobs.tsx:109)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/components/panel/CaptureJobs.tsx:137)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/components/panel/UpdateBanner.tsx:41)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/components/panel/UpdateBanner.tsx:69)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/components/shell/useShellStatus.ts:29)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/components/shell/useShellStatus.ts:47)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/components/shell/useShellStatus.ts:64)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/lib/chat-stream.ts:288)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/lib/chat-stream.ts:400)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/lib/chat-stream.ts:411)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/lib/chat-stream.ts:444)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/lib/chat-stream.ts:455)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/lib/chat-stream.ts:466)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/middleware.ts:35)
- **[critical] Dangerous code execution functions that can execute arbitrary code** — Pattern detected: compile ( (/repo/core/landing/next.config.ts:87)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/public/sw.js:80)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/core/landing/public/sw.js:97)
- **[informational] Outbound network request primitives in JavaScript/TypeScript** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch( (/repo/infra/cf-worker/licensing.js:141)
- **[critical] INJECTION ATTACK detected by YARA** — Detects command injection patterns in agent skills: shell operators, system commands, and network tools: /dev/tcp/127.0.0.1 (/repo/infra/docker-compose.qdrant.yml:27)
- **[low] Hidden data file detected** — Hidden file found: infra/helm/abs/.helmignore. Hidden files may contain concealed configuration or data that should be reviewed. (/repo/infra/helm/abs/.helmignore:None)
- **[medium] File extension does not match actual content type** — File 'nats-server.conf' extension (.conf) suggests one format but Magika detected a different text format: Text protocol buffer (textproto). This may indicate content obfuscation or a misnamed file. (/repo/infra/nats/nats-server.conf:None)
- **[informational] Outbound network request primitives that can transmit data externally** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: urllib.request.urlopen( (/repo/infra/piper/server.py:84)
- **[high] Dangerous data flow in command pipeline** — Pipeline downloads data from the network and executes it: 'curl -fsSL https://example.com/deploy.sh \| bash'. This is a remote code execution pattern. (/repo/infra/watchdog/deploy.sh:1)
- **[critical] INJECTION ATTACK detected by YARA** — Detects command injection patterns in agent skills: shell operators, system commands, and network tools: dd if=/dev/zero of=/ (/repo/scripts/chaos/chaos_isolated.sh:80)
- **[high] SYSTEM MANIPULATION detected by YARA** — Detects system manipulation, privilege escalation, and destructive file operations: dd if=/dev/zero of=/ (/repo/scripts/chaos/chaos_isolated.sh:80)
- **[high] Database connection string with embedded credentials** — Pattern detected: post**** (/repo/scripts/dr/restore_postgres.sh:4)
- **[informational] Outbound network request primitives that can transmit data externally** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: urllib.request.Request( (/repo/scripts/eval/multimodel_winrate.py:99)
- **[informational] Outbound network request primitives that can transmit data externally** — [mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: urllib.request.urlopen( (/repo/scripts/eval/multimodel_winrate.py:101)
- **[informational] Vague skill description** — [mcp_server policy: capability-matches-purpose class; severity low -> informational] Skill description is too short (16 chars). Provide detailed explanation. (/repo/.github/SKILL.md:None)
- **[informational] Skill name does not follow agent skills naming rules** — Skill name '.github' is invalid. Agent skills require lowercase letters, numbers, and hyphens only, with a maximum length of 64 characters. (/repo/.github/SKILL.md:None)
- **[informational] Skill does not specify a license** — Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms. (/repo/.github/SKILL.md:None)
- **[informational] Vague skill description** — [mcp_server policy: capability-matches-purpose class; severity low -> informational] Skill description is too short (16 chars). Provide detailed explanation. (/repo/docs/SKILL.md:None)
- **[informational] Skill does not specify a license** — Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms. (/repo/docs/SKILL.md:None)
- **[medium] Undeclared network usage** — Skill code uses network libraries but doesn't declare network requirement (/repo/infra/watchdog/repo/infra/watchdog/README.md:None)
- **[informational] Vague skill description** — [mcp_server policy: capability-matches-purpose class; severity low -> informational] Skill description is too short (16 chars). Provide detailed explanation. (/repo/infra/watchdog/SKILL.md:None)
- **[informational] Skill does not specify a license** — Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms. (/repo/infra/watchdog/SKILL.md:None)
- **[high] Dangerous data flow in command pipeline** — Pipeline downloads data from the network and executes it: 'curl -fsSL https://example.com/deploy.sh \| bash'. This is a remote code execution pattern. (/repo/infra/watchdog/deploy.sh:1)
- **[informational] Vague skill description** — [mcp_server policy: capability-matches-purpose class; severity low -> informational] Skill description is too short (16 chars). Provide detailed explanation. (/repo/infra/helm/SKILL.md:None)
- **[informational] Skill does not specify a license** — Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms. (/repo/infra/helm/SKILL.md:None)
- **[low] Hidden data file detected** — Hidden file found: abs/.helmignore. Hidden files may contain concealed configuration or data that should be reviewed. (/repo/infra/helm/abs/.helmignore:None)
- **[informational] Vague skill description** — [mcp_server policy: capability-matches-purpose class; severity low -> informational] Skill description is too short (16 chars). Provide detailed explanation. (/repo/artifacts/promise_verify/SKILL.md:None)
- **[informational] Skill name does not follow agent skills naming rules** — Skill name 'promise_verify' is invalid. Agent skills require lowercase letters, numbers, and hyphens only, with a maximum length of 64 characters. (/repo/artifacts/promise_verify/SKILL.md:None)
- **[informational] Skill does not specify a license** — Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms. (/repo/artifacts/promise_verify/SKILL.md:None)
- **[informational] Vague skill description** — [mcp_server policy: capability-matches-purpose class; severity low -> informational] Skill description is too short (16 chars). Provide detailed explanation. (/repo/docs/operations/SKILL.md:None)
- **[informational] Skill does not specify a license** — Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms. (/repo/docs/operations/SKILL.md:None)
- **[informational] Vague skill description** — [mcp_server policy: capability-matches-purpose class; severity low -> informational] Skill description is too short (16 chars). Provide detailed explanation. (/repo/docs/security/SKILL.md:None)
- **[informational] Skill does not specify a license** — Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms. (/repo/docs/security/SKILL.md:None)
- **[informational] Vague skill description** — [mcp_server policy: capability-matches-purpose class; severity low -> informational] Skill description is too short (16 chars). Provide detailed explanation. (/repo/docs/qa/SKILL.md:None)
- **[informational] Skill does not specify a license** — Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms. (/repo/docs/qa/SKILL.md:None)
- **[informational] Vague skill description** — [mcp_server policy: capability-matches-purpose class; severity low -> informational] Skill description is too short (16 chars). Provide detailed explanation. (/repo/docs/legal/SKILL.md:None)
- **[informational] Skill does not specify a license** — Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms. (/repo/docs/legal/SKILL.md:None)
- **[informational] Vague skill description** — [mcp_server policy: capability-matches-purpose class; severity low -> informational] Skill description is too short (16 chars). Provide detailed explanation. (/repo/docs/architecture/SKILL.md:None)
- **[informational] Skill does not specify a license** — Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms. (/repo/docs/architecture/SKILL.md:None)
- **[informational] Vague skill description** — [mcp_server policy: capability-matches-purpose class; severity low -> informational] Skill description is too short (16 chars). Provide detailed explanation. (/repo/docs/runbooks/SKILL.md:None)
- **[informational] Skill does not specify a license** — Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms. (/repo/docs/runbooks/SKILL.md:None)
- **[informational] Critically low analyzability score** — [mcp_server policy: capability-matches-purpose class; severity high -> informational] Only 45% of skill content could be analyzed. 1 of 2 files are opaque to the scanner. The safety assessment has low confidence. (/repo/benchmarks/k6:None)
- **[informational] Vague skill description** — [mcp_server policy: capability-matches-purpose class; severity low -> informational] Skill description is too short (16 chars). Provide detailed explanation. (/repo/benchmarks/k6/SKILL.md:None)
- **[informational] Skill does not specify a license** — Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms. (/repo/benchmarks/k6/SKILL.md:None)

### agent-audit-kit (v0.3.26) — Unsafe / 0.0

- **[high] Generic high-entropy secret** — A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key. (infra/scripts/vault_escrow_setup.sh:14)
- **[high] Generic high-entropy secret** — A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key. (scripts/eval/multimodel_winrate.py:464)
- **[high] Generic high-entropy secret** — A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key. (scripts/eval/latency_benchmark.py:316)
- **[high] Generic high-entropy secret** — A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key. (core/backend/tests/test_v1_magic_claim.py:9)
- **[high] Generic high-entropy secret** — A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key. (core/backend/tests/test_mcp_transport_live.py:42)
- **[high] Generic high-entropy secret** — A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key. (core/backend/tests/test_vault_disaster_scenarios.py:26)
- **[high] Generic high-entropy secret** — A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key. (core/backend/tests/test_vault_disaster_scenarios.py:27)
- **[critical] OpenAI API key exposed** — An OpenAI API key (sk-*) was found in a project file. (core/backend/tests/test_dashboard_cache_sanitize.py:75)
- **[critical] OpenAI API key exposed** — An OpenAI API key (sk-*) was found in a project file. (core/backend/tests/test_dashboard_cache_sanitize.py:75)
- **[high] Generic high-entropy secret** — A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key. (core/backend/tests/test_inngest_app.py:33)
- **[high] Generic high-entropy secret** — A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key. (core/backend/tests/test_vault_migration.py:33)
- **[high] Generic high-entropy secret** — A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key. (core/backend/scripts/provider_drift_probe.py:47)
- **[high] Generic high-entropy secret** — A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key. (core/backend/app/api/vault_admin.py:37)
- **[high] Generic high-entropy secret** — A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key. (core/backend/app/api/status_page.py:343)
- **[high] Generic high-entropy secret** — A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key. (core/backend/app/rag/embedding_bge.py:247)
- **[high] Generic high-entropy secret** — A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key. (core/backend/app/static/setup/assets/setup.js:300)
- **[high] Generic high-entropy secret** — A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key. (core/backend/app/api/admin/auth.py:173)
- **[high] Generic high-entropy secret** — A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key. (core/backend/app/i18n/locales/en.json:44)
- **[high] Generic high-entropy secret** — A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key. (core/backend/app/i18n/locales/en.json:45)
- **[high] Generic high-entropy secret** — A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key. (core/backend/app/i18n/locales/es.json:44)
- **[high] Generic high-entropy secret** — A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key. (core/backend/app/i18n/locales/es.json:45)
- **[high] Generic high-entropy secret** — A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key. (core/backend/app/i18n/locales/tr.json:44)
- **[high] Generic high-entropy secret** — A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key. (core/backend/app/i18n/locales/tr.json:45)
- **[high] Private key file present** — A private key file (*.pem, *.key, id_rsa, etc.) or PEM content was found in the project. (core/backend/app/update/manifest_pubkey.pem:None)
- **[critical] Agent instruction file contains shell command directives** — An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior. (CLAUDE.md:16)
- **[critical] Agent instruction file contains shell command directives** — An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior. (CLAUDE.md:None)
- **[critical] Agent instruction file contains shell command directives** — An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior. (CLAUDE.md:None)
- **[critical] Agent instruction file contains shell command directives** — An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior. (CLAUDE.md:None)
- **[critical] Agent instruction file contains shell command directives** — An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior. (CLAUDE.md:None)
- **[critical] Agent instruction file contains shell command directives** — An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior. (CLAUDE.md:None)
- **[critical] Agent instruction file contains shell command directives** — An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior. (CLAUDE.md:None)
- **[critical] Agent instruction file contains shell command directives** — An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior. (CLAUDE.md:None)
- **[critical] Agent instruction file contains shell command directives** — An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior. (CLAUDE.md:None)
- **[medium] Dependency with no declared license** — A dependency has no declared license, creating legal uncertainty about usage rights. (package.json:1)
- **[medium] Missing rate limiting on MCP endpoint** — An MCP server endpoint does not declare rate limiting. Unrestricted access allows credential stuffing and enumeration attacks. (core/backend/tests/test_mcp_shell.py:9)
- **[medium] Missing rate limiting on MCP endpoint** — An MCP server endpoint does not declare rate limiting. Unrestricted access allows credential stuffing and enumeration attacks. (core/backend/tests/test_external_mcp.py:19)
- **[medium] Missing rate limiting on MCP endpoint** — An MCP server endpoint does not declare rate limiting. Unrestricted access allows credential stuffing and enumeration attacks. (core/backend/tests/test_mcp_transport_auth.py:2)
- **[medium] Missing rate limiting on MCP endpoint** — An MCP server endpoint does not declare rate limiting. Unrestricted access allows credential stuffing and enumeration attacks. (core/backend/app/mcp/transport_auth.py:6)
- **[medium] Missing rate limiting on MCP endpoint** — An MCP server endpoint does not declare rate limiting. Unrestricted access allows credential stuffing and enumeration attacks. (core/backend/app/mcp/server.py:142)
- **[medium] Missing rate limiting on MCP endpoint** — An MCP server endpoint does not declare rate limiting. Unrestricted access allows credential stuffing and enumeration attacks. (core/backend/app/mcp/external/federation.py:10)
- **[high] PKCE using the plain challenge method** — An OAuth client sets code_challenge_method=plain (or omits it). S256 is mandatory; 'plain' leaks the verifier to anyone with access to the authorization request. (security_tests/oauth/test_replay.py:38)
- **[medium] Bearer token used where DPoP or mTLS is required** — An MCP remote server accepts plain Bearer tokens on a flow that MCP spec 2025-11-25 flags for DPoP (Demonstrating Proof of Possession) or mTLS-bound tokens. A stolen Bearer token is fully replayable. (core/backend/tests/test_sweep4_smart_link_beta.py:None)
- **[medium] Bearer token used where DPoP or mTLS is required** — An MCP remote server accepts plain Bearer tokens on a flow that MCP spec 2025-11-25 flags for DPoP (Demonstrating Proof of Possession) or mTLS-bound tokens. A stolen Bearer token is fully replayable. (core/backend/tests/test_smart_link_slack.py:None)
- **[medium] Bearer token used where DPoP or mTLS is required** — An MCP remote server accepts plain Bearer tokens on a flow that MCP spec 2025-11-25 flags for DPoP (Demonstrating Proof of Possession) or mTLS-bound tokens. A stolen Bearer token is fully replayable. (core/backend/tests/test_mcp_gateway.py:None)
- **[high] PKCE using the plain challenge method** — An OAuth client sets code_challenge_method=plain (or omits it). S256 is mandatory; 'plain' leaks the verifier to anyone with access to the authorization request. (core/backend/tests/test_oauth_server.py:84)
- **[medium] Bearer token used where DPoP or mTLS is required** — An MCP remote server accepts plain Bearer tokens on a flow that MCP spec 2025-11-25 flags for DPoP (Demonstrating Proof of Possession) or mTLS-bound tokens. A stolen Bearer token is fully replayable. (core/backend/tests/test_smart_link_oauth_prod.py:None)
- **[medium] Bearer token used where DPoP or mTLS is required** — An MCP remote server accepts plain Bearer tokens on a flow that MCP spec 2025-11-25 flags for DPoP (Demonstrating Proof of Possession) or mTLS-bound tokens. A stolen Bearer token is fully replayable. (core/backend/tests/test_rag_cookie_session.py:None)
- **[medium] Bearer token used where DPoP or mTLS is required** — An MCP remote server accepts plain Bearer tokens on a flow that MCP spec 2025-11-25 flags for DPoP (Demonstrating Proof of Possession) or mTLS-bound tokens. A stolen Bearer token is fully replayable. (core/backend/tests/fixtures/golden_eval_multimodel.json:None)
- **[medium] Bearer token used where DPoP or mTLS is required** — An MCP remote server accepts plain Bearer tokens on a flow that MCP spec 2025-11-25 flags for DPoP (Demonstrating Proof of Possession) or mTLS-bound tokens. A stolen Bearer token is fully replayable. (core/backend/app/mcp/transport_auth.py:None)
- **[medium] Bearer token used where DPoP or mTLS is required** — An MCP remote server accepts plain Bearer tokens on a flow that MCP spec 2025-11-25 flags for DPoP (Demonstrating Proof of Possession) or mTLS-bound tokens. A stolen Bearer token is fully replayable. (core/landing/components/ConnectPanel.tsx:None)
- **[medium] Bearer token used where DPoP or mTLS is required** — An MCP remote server accepts plain Bearer tokens on a flow that MCP spec 2025-11-25 flags for DPoP (Demonstrating Proof of Possession) or mTLS-bound tokens. A stolen Bearer token is fully replayable. (core/landing/__tests__/ConnectPanel.test.tsx:None)
- **[medium] MCP task has no TTL or cancellation path** — A task record has no expiration and no cancellation endpoint. Orphaned tasks accumulate forever, including their inputs. (core/backend/app/hooks/common.py:None)
- **[medium] MCP task has no TTL or cancellation path** — A task record has no expiration and no cancellation endpoint. Orphaned tasks accumulate forever, including their inputs. (core/backend/app/hooks/plan_first.py:None)
- **[critical] Aadhaar number in source / config** — A 12-digit Aadhaar number passed the Verhoeff checksum and is embedded in project text. Aadhaar is restricted under the UIDAI Act and India DPDP §8(4). Storing in code is a reportable breach. (artifacts/promise_verify/latency_benchmark.json:130)
- **[critical] Aadhaar number in source / config** — A 12-digit Aadhaar number passed the Verhoeff checksum and is embedded in project text. Aadhaar is restricted under the UIDAI Act and India DPDP §8(4). Storing in code is a reportable breach. (artifacts/promise_verify/latency_benchmark.json:256)
- **[critical] Aadhaar number in source / config** — A 12-digit Aadhaar number passed the Verhoeff checksum and is embedded in project text. Aadhaar is restricted under the UIDAI Act and India DPDP §8(4). Storing in code is a reportable breach. (artifacts/promise_verify/latency_benchmark.json:592)
- **[critical] Aadhaar number in source / config** — A 12-digit Aadhaar number passed the Verhoeff checksum and is embedded in project text. Aadhaar is restricted under the UIDAI Act and India DPDP §8(4). Storing in code is a reportable breach. (artifacts/promise_verify/latency_benchmark.json:844)
- **[critical] Aadhaar number in source / config** — A 12-digit Aadhaar number passed the Verhoeff checksum and is embedded in project text. Aadhaar is restricted under the UIDAI Act and India DPDP §8(4). Storing in code is a reportable breach. (artifacts/promise_verify/latency_benchmark.json:984)
- **[critical] Aadhaar number in source / config** — A 12-digit Aadhaar number passed the Verhoeff checksum and is embedded in project text. Aadhaar is restricted under the UIDAI Act and India DPDP §8(4). Storing in code is a reportable breach. (artifacts/promise_verify/latency_benchmark.json:1362)
- **[critical] Aadhaar number in source / config** — A 12-digit Aadhaar number passed the Verhoeff checksum and is embedded in project text. Aadhaar is restricted under the UIDAI Act and India DPDP §8(4). Storing in code is a reportable breach. (artifacts/promise_verify/latency_benchmark.json:1404)
- **[medium] Healthcare context without explicit AI-disclosure to user** — Text mentions patient / clinical / mental-health / therapy / diagnosis but the tool never explicitly says the responder is an AI. Multiple 2026 state laws (TN, WA, UT) expect clear AI disclosure in clinical interactions. (docs/vault-recovery-runbook.md:None)
- **[medium] Healthcare context without explicit AI-disclosure to user** — Text mentions patient / clinical / mental-health / therapy / diagnosis but the tool never explicitly says the responder is an AI. Multiple 2026 state laws (TN, WA, UT) expect clear AI disclosure in clinical interactions. (docs/CUSTOMER_USER_GUIDE.md:None)
- **[medium] Healthcare context without explicit AI-disclosure to user** — Text mentions patient / clinical / mental-health / therapy / diagnosis but the tool never explicitly says the responder is an AI. Multiple 2026 state laws (TN, WA, UT) expect clear AI disclosure in clinical interactions. (docs/troubleshooting.md:None)
- **[medium] Healthcare context without explicit AI-disclosure to user** — Text mentions patient / clinical / mental-health / therapy / diagnosis but the tool never explicitly says the responder is an AI. Multiple 2026 state laws (TN, WA, UT) expect clear AI disclosure in clinical interactions. (docs/CLAUDE_CODE_INTEGRATION.md:None)
- **[high] Crisis keywords handled without escalation path** — A healthcare AI surface mentions suicide / self-harm / crisis but never references 988 / 911 / 112 / 999 / a crisis line. Tennessee HB 1951 (2026) creates criminal liability for encouraging suicide; lacking an escalation path materially worsens the exposure. (docs/billing-runbook.md:178)
- **[high] Crisis keywords handled without escalation path** — A healthcare AI surface mentions suicide / self-harm / crisis but never references 988 / 911 / 112 / 999 / a crisis line. Tennessee HB 1951 (2026) creates criminal liability for encouraging suicide; lacking an escalation path materially worsens the exposure. (cerbos/policies/principal.user.v1.yaml:1)
- **[high] Crisis keywords handled without escalation path** — A healthcare AI surface mentions suicide / self-harm / crisis but never references 988 / 911 / 112 / 999 / a crisis line. Tennessee HB 1951 (2026) creates criminal liability for encouraging suicide; lacking an escalation path materially worsens the exposure. (infra/cerbos/policies/principal.user.v1.yaml:1)
- **[medium] Healthcare context without explicit AI-disclosure to user** — Text mentions patient / clinical / mental-health / therapy / diagnosis but the tool never explicitly says the responder is an AI. Multiple 2026 state laws (TN, WA, UT) expect clear AI disclosure in clinical interactions. (docs/operations/admin-guide.md:None)
- **[high] Crisis keywords handled without escalation path** — A healthcare AI surface mentions suicide / self-harm / crisis but never references 988 / 911 / 112 / 999 / a crisis line. Tennessee HB 1951 (2026) creates criminal liability for encouraging suicide; lacking an escalation path materially worsens the exposure. (docs/security/multi-tenant.md:32)
- **[high] Crisis keywords handled without escalation path** — A healthcare AI surface mentions suicide / self-harm / crisis but never references 988 / 911 / 112 / 999 / a crisis line. Tennessee HB 1951 (2026) creates criminal liability for encouraging suicide; lacking an escalation path materially worsens the exposure. (docs/security/threat-model.md:52)
- **[medium] Privacy doc missing 'do-not-sell' / opt-out-of-sale language** — A privacy policy / notice lacks the CCPA-lineage opt-out-of-sale language that Alabama DPPA, CCPA, CPRA, VCDPA, and the other 21 state comprehensive privacy laws converge on. (docs/data-retention-policy.md:None)
- **[medium] Privacy doc missing access / deletion / portability rights** — A privacy policy does not describe the consumer's access, deletion, or portability rights — mandatory across every state comprehensive privacy law passed 2018-2026. (docs/data-retention-policy.md:None)
- **[medium] Privacy doc missing 'do-not-sell' / opt-out-of-sale language** — A privacy policy / notice lacks the CCPA-lineage opt-out-of-sale language that Alabama DPPA, CCPA, CPRA, VCDPA, and the other 21 state comprehensive privacy laws converge on. (docs/legal/privacy-policy.md:None)
- **[medium] Privacy doc missing access / deletion / portability rights** — A privacy policy does not describe the consumer's access, deletion, or portability rights — mandatory across every state comprehensive privacy law passed 2018-2026. (docs/legal/privacy-policy.md:None)
- **[medium] Privacy doc missing 'do-not-sell' / opt-out-of-sale language** — A privacy policy / notice lacks the CCPA-lineage opt-out-of-sale language that Alabama DPPA, CCPA, CPRA, VCDPA, and the other 21 state comprehensive privacy laws converge on. (docs/legal/PRIVACY_PHONE_HOME.md:None)
- **[medium] Privacy doc missing access / deletion / portability rights** — A privacy policy does not describe the consumer's access, deletion, or portability rights — mandatory across every state comprehensive privacy law passed 2018-2026. (docs/legal/PRIVACY_PHONE_HOME.md:None)
- **[low] Privacy doc missing data-controller contact** — A privacy policy does not expose a data-controller contact (DPO email / privacy@ / mailing address). Required by most state laws and a prerequisite for any DSAR. (docs/legal/PRIVACY_PHONE_HOME.md:None)
- **[medium] Third-party GitHub Action not pinned by full commit SHA** — A workflow in '.github/workflows/' uses a third-party Action ('owner/action@ref') where 'ref' is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision — the downstream repo consuming it will happily run the new code with 'GITHUB_TOKEN' and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy. (.github/workflows/cicd.yml:160)
- **[medium] Third-party GitHub Action not pinned by full commit SHA** — A workflow in '.github/workflows/' uses a third-party Action ('owner/action@ref') where 'ref' is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision — the downstream repo consuming it will happily run the new code with 'GITHUB_TOKEN' and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy. (.github/workflows/cicd.yml:190)
- **[medium] Third-party GitHub Action not pinned by full commit SHA** — A workflow in '.github/workflows/' uses a third-party Action ('owner/action@ref') where 'ref' is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision — the downstream repo consuming it will happily run the new code with 'GITHUB_TOKEN' and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy. (.github/workflows/cicd.yml:191)
- **[medium] Third-party GitHub Action not pinned by full commit SHA** — A workflow in '.github/workflows/' uses a third-party Action ('owner/action@ref') where 'ref' is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision — the downstream repo consuming it will happily run the new code with 'GITHUB_TOKEN' and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy. (.github/workflows/cicd.yml:193)
- **[medium] Third-party GitHub Action not pinned by full commit SHA** — A workflow in '.github/workflows/' uses a third-party Action ('owner/action@ref') where 'ref' is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision — the downstream repo consuming it will happily run the new code with 'GITHUB_TOKEN' and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy. (.github/workflows/cicd.yml:200)
- **[medium] Third-party GitHub Action not pinned by full commit SHA** — A workflow in '.github/workflows/' uses a third-party Action ('owner/action@ref') where 'ref' is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision — the downstream repo consuming it will happily run the new code with 'GITHUB_TOKEN' and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy. (.github/workflows/cicd.yml:209)
- **[medium] Third-party GitHub Action not pinned by full commit SHA** — A workflow in '.github/workflows/' uses a third-party Action ('owner/action@ref') where 'ref' is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision — the downstream repo consuming it will happily run the new code with 'GITHUB_TOKEN' and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy. (.github/workflows/cicd.yml:220)
- **[medium] Third-party GitHub Action not pinned by full commit SHA** — A workflow in '.github/workflows/' uses a third-party Action ('owner/action@ref') where 'ref' is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision — the downstream repo consuming it will happily run the new code with 'GITHUB_TOKEN' and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy. (.github/workflows/cicd.yml:243)
- **[medium] Third-party GitHub Action not pinned by full commit SHA** — A workflow in '.github/workflows/' uses a third-party Action ('owner/action@ref') where 'ref' is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision — the downstream repo consuming it will happily run the new code with 'GITHUB_TOKEN' and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy. (.github/workflows/cicd.yml:361)
- **[medium] Third-party GitHub Action not pinned by full commit SHA** — A workflow in '.github/workflows/' uses a third-party Action ('owner/action@ref') where 'ref' is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision — the downstream repo consuming it will happily run the new code with 'GITHUB_TOKEN' and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy. (.github/workflows/security-nightly.yml:59)
- **[medium] Third-party GitHub Action not pinned by full commit SHA** — A workflow in '.github/workflows/' uses a third-party Action ('owner/action@ref') where 'ref' is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision — the downstream repo consuming it will happily run the new code with 'GITHUB_TOKEN' and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy. (.github/workflows/helm-matrix.yml:37)
- **[medium] Third-party GitHub Action not pinned by full commit SHA** — A workflow in '.github/workflows/' uses a third-party Action ('owner/action@ref') where 'ref' is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision — the downstream repo consuming it will happily run the new code with 'GITHUB_TOKEN' and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy. (.github/workflows/helm-matrix.yml:41)
- **[medium] Third-party GitHub Action not pinned by full commit SHA** — A workflow in '.github/workflows/' uses a third-party Action ('owner/action@ref') where 'ref' is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision — the downstream repo consuming it will happily run the new code with 'GITHUB_TOKEN' and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy. (.github/workflows/lighthouse-nightly.yml:54)
- **[medium] Third-party GitHub Action not pinned by full commit SHA** — A workflow in '.github/workflows/' uses a third-party Action ('owner/action@ref') where 'ref' is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision — the downstream repo consuming it will happily run the new code with 'GITHUB_TOKEN' and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy. (.github/workflows/release.yml:98)
- **[medium] Third-party GitHub Action not pinned by full commit SHA** — A workflow in '.github/workflows/' uses a third-party Action ('owner/action@ref') where 'ref' is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision — the downstream repo consuming it will happily run the new code with 'GITHUB_TOKEN' and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy. (.github/workflows/release.yml:133)
- **[medium] Third-party GitHub Action not pinned by full commit SHA** — A workflow in '.github/workflows/' uses a third-party Action ('owner/action@ref') where 'ref' is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision — the downstream repo consuming it will happily run the new code with 'GITHUB_TOKEN' and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy. (.github/workflows/release.yml:136)
- **[medium] Third-party GitHub Action not pinned by full commit SHA** — A workflow in '.github/workflows/' uses a third-party Action ('owner/action@ref') where 'ref' is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision — the downstream repo consuming it will happily run the new code with 'GITHUB_TOKEN' and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy. (.github/workflows/release.yml:139)
- **[medium] Third-party GitHub Action not pinned by full commit SHA** — A workflow in '.github/workflows/' uses a third-party Action ('owner/action@ref') where 'ref' is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision — the downstream repo consuming it will happily run the new code with 'GITHUB_TOKEN' and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy. (.github/workflows/release.yml:161)
- **[medium] Third-party GitHub Action not pinned by full commit SHA** — A workflow in '.github/workflows/' uses a third-party Action ('owner/action@ref') where 'ref' is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision — the downstream repo consuming it will happily run the new code with 'GITHUB_TOKEN' and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy. (.github/workflows/release.yml:206)
- **[medium] Third-party GitHub Action not pinned by full commit SHA** — A workflow in '.github/workflows/' uses a third-party Action ('owner/action@ref') where 'ref' is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision — the downstream repo consuming it will happily run the new code with 'GITHUB_TOKEN' and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy. (.github/workflows/perf-budget.yml:41)
- **[medium] Third-party GitHub Action not pinned by full commit SHA** — A workflow in '.github/workflows/' uses a third-party Action ('owner/action@ref') where 'ref' is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision — the downstream repo consuming it will happily run the new code with 'GITHUB_TOKEN' and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy. (.github/workflows/perf-budget.yml:71)
- **[high] Indirect-prompt-injection wild payload checked into repo** — A source / config file ('.md', '.txt', '.yml', '.yaml', '.json', '.py') embeds a known wild IPI payload from the 2026-04-24 Help Net Security + Infosec Magazine catalogue. Common shapes: ignore-prior + exfil, system-role override, reveal-system-prompt, credential exfil via cURL, tool-call rerouting, delete-repository, admin role escalation, obfuscated prompt break, image-attached IPI, RAG-poisoned document. Refresh the corpus with 'aak corpus update --ipi'. (core/backend/tests/test_fuzz.py:105)
- **[high] Indirect-prompt-injection wild payload checked into repo** — A source / config file ('.md', '.txt', '.yml', '.yaml', '.json', '.py') embeds a known wild IPI payload from the 2026-04-24 Help Net Security + Infosec Magazine catalogue. Common shapes: ignore-prior + exfil, system-role override, reveal-system-prompt, credential exfil via cURL, tool-call rerouting, delete-repository, admin role escalation, obfuscated prompt break, image-attached IPI, RAG-poisoned document. Refresh the corpus with 'aak corpus update --ipi'. (core/backend/tests/test_text2sql.py:37)

### bearer (v2.0.2) — Unsafe / 0.0

- **[critical] Usage of hard-coded secret** — \#\# Description  Storing secrets directly in your code is a security risk. Instead, opt for environment variables or a secret management system to safeguard your secrets.  \#\# Remediations  - **Do not** store plaintext secrets in your code. This exposes sensitive information to unnecessary risk.   '''javascript     passport.use(new OAuth2Strategy({         authorizationURL: 'https://www.example.com/oauth2/authorize',         tokenURL: 'https://www.example.com/oauth2/token',         clientID: 'my-i (/repo/core/backend/app/static/setup/assets/setup.js:23)
- **[critical] Usage of hard-coded secret** — \#\# Description  Storing secrets directly in your code is a security risk. Instead, opt for environment variables or a secret management system to safeguard your secrets.  \#\# Remediations  - **Do not** store plaintext secrets in your code. This exposes sensitive information to unnecessary risk.   '''javascript     passport.use(new OAuth2Strategy({         authorizationURL: 'https://www.example.com/oauth2/authorize',         tokenURL: 'https://www.example.com/oauth2/token',         clientID: 'my-i (/repo/core/backend/app/static/setup/assets/setup.js:59)
- **[critical] Usage of hard-coded secret** — \#\# Description  Storing secrets directly in your code is a security risk. Instead, opt for environment variables or a secret management system to safeguard your secrets.  \#\# Remediations  - **Do not** store plaintext secrets in your code. This exposes sensitive information to unnecessary risk.   '''javascript     passport.use(new OAuth2Strategy({         authorizationURL: 'https://www.example.com/oauth2/authorize',         tokenURL: 'https://www.example.com/oauth2/token',         clientID: 'my-i (/repo/core/backend/app/static/setup/assets/setup.js:75)
- **[critical] Usage of hard-coded secret** — \#\# Description  Storing secrets directly in your code is a security risk. Instead, opt for environment variables or a secret management system to safeguard your secrets.  \#\# Remediations  - **Do not** store plaintext secrets in your code. This exposes sensitive information to unnecessary risk.   '''javascript     passport.use(new OAuth2Strategy({         authorizationURL: 'https://www.example.com/oauth2/authorize',         tokenURL: 'https://www.example.com/oauth2/token',         clientID: 'my-i (/repo/core/backend/app/static/setup/assets/setup.js:111)
- **[critical] Usage of hard-coded secret** — \#\# Description  Storing secrets directly in your code is a security risk. Instead, opt for environment variables or a secret management system to safeguard your secrets.  \#\# Remediations  - **Do not** store plaintext secrets in your code. This exposes sensitive information to unnecessary risk.   '''javascript     passport.use(new OAuth2Strategy({         authorizationURL: 'https://www.example.com/oauth2/authorize',         tokenURL: 'https://www.example.com/oauth2/token',         clientID: 'my-i (/repo/core/backend/app/static/setup/assets/setup.js:127)
- **[critical] Usage of hard-coded secret** — \#\# Description  Storing secrets directly in your code is a security risk. Instead, opt for environment variables or a secret management system to safeguard your secrets.  \#\# Remediations  - **Do not** store plaintext secrets in your code. This exposes sensitive information to unnecessary risk.   '''javascript     passport.use(new OAuth2Strategy({         authorizationURL: 'https://www.example.com/oauth2/authorize',         tokenURL: 'https://www.example.com/oauth2/token',         clientID: 'my-i (/repo/core/backend/app/static/setup/assets/setup.js:386)
- **[critical] Usage of hard-coded secret** — \#\# Description  Storing secrets directly in your code is a security risk. Instead, opt for environment variables or a secret management system to safeguard your secrets.  \#\# Remediations  - **Do not** store plaintext secrets in your code. This exposes sensitive information to unnecessary risk.   '''javascript     passport.use(new OAuth2Strategy({         authorizationURL: 'https://www.example.com/oauth2/authorize',         tokenURL: 'https://www.example.com/oauth2/token',         clientID: 'my-i (/repo/core/backend/app/static/setup/assets/setup.js:387)
- **[critical] Usage of hard-coded secret** — \#\# Description  Storing secrets directly in your code is a security risk. Instead, opt for environment variables or a secret management system to safeguard your secrets.  \#\# Remediations  - **Do not** store plaintext secrets in your code. This exposes sensitive information to unnecessary risk.   '''javascript     passport.use(new OAuth2Strategy({         authorizationURL: 'https://www.example.com/oauth2/authorize',         tokenURL: 'https://www.example.com/oauth2/token',         clientID: 'my-i (/repo/core/backend/app/static/setup/assets/setup.js:388)
- **[critical] Usage of hard-coded secret** — \#\# Description  Storing secrets directly in your code is a security risk. Instead, opt for environment variables or a secret management system to safeguard your secrets.  \#\# Remediations  - **Do not** store plaintext secrets in your code. This exposes sensitive information to unnecessary risk.   '''javascript     passport.use(new OAuth2Strategy({         authorizationURL: 'https://www.example.com/oauth2/authorize',         tokenURL: 'https://www.example.com/oauth2/token',         clientID: 'my-i (/repo/core/backend/app/static/setup/assets/setup.js:389)
- **[critical] Usage of hard-coded secret** — \#\# Description  Storing secrets directly in your code is a security risk. Instead, opt for environment variables or a secret management system to safeguard your secrets.  \#\# Remediations  - **Do not** store plaintext secrets in your code. This exposes sensitive information to unnecessary risk.   '''javascript     passport.use(new OAuth2Strategy({         authorizationURL: 'https://www.example.com/oauth2/authorize',         tokenURL: 'https://www.example.com/oauth2/token',         clientID: 'my-i (/repo/core/backend/app/static/setup/assets/setup.js:390)
- **[critical] Unsanitized external input in code generation** — \#\# Description  Allowing external input (dynamic or user-controlled) to directly influence code generation or scripting functions without proper sanitization can lead to code injection vulnerabilities. This occurs when an attacker is able to insert malicious code into your application, which is then executed, potentially leading to unauthorized actions or data access.  \#\# Remediations  - **Do not** pass unsanitized external input to functions or methods that dynamically execute code. - **Do** al (/repo/core/backend/app/api/admin/providers_save.py:145)
- **[critical] Unsanitized external input in code generation** — \#\# Description  Allowing external input (dynamic or user-controlled) to directly influence code generation or scripting functions without proper sanitization can lead to code injection vulnerabilities. This occurs when an attacker is able to insert malicious code into your application, which is then executed, potentially leading to unauthorized actions or data access.  \#\# Remediations  - **Do not** pass unsanitized external input to functions or methods that dynamically execute code. - **Do** al (/repo/core/backend/app/api/admin/providers_save.py:293)
- **[critical] Unsanitized external input in code generation** — \#\# Description  Allowing external input (dynamic or user-controlled) to directly influence code generation or scripting functions without proper sanitization can lead to code injection vulnerabilities. This occurs when an attacker is able to insert malicious code into your application, which is then executed, potentially leading to unauthorized actions or data access.  \#\# Remediations  - **Do not** pass unsanitized external input to functions or methods that dynamically execute code. - **Do** al (/repo/core/backend/app/api/setup.py:740)
- **[critical] Unsanitized external input in code generation** — \#\# Description  Allowing external input (dynamic or user-controlled) to directly influence code generation or scripting functions without proper sanitization can lead to code injection vulnerabilities. This occurs when an attacker is able to insert malicious code into your application, which is then executed, potentially leading to unauthorized actions or data access.  \#\# Remediations  - **Do not** pass unsanitized external input to functions or methods that dynamically execute code. - **Do** al (/repo/core/backend/app/providers/contract_validator.py:20)
- **[critical] Usage of insecure SMTP connection** — \#\# Description  An insecure SMTP connection can expose transmitted data to unauthorized access. This rule identifies if SMTP settings are configured to enforce secure connections.  \#\# Remediations  - **Do** use the 'SMTP_SSL' class to establish secure SMTP connections. This prevents unauthorized access to the data being transmitted.   '''python   smtp = smtplib.SMTP_SSL("smtp.example.com")   '''  \#\# References  - [OWASP insecure transport](https://owasp.org/www-community/vulnerabilities/Insecure (/repo/core/backend/app/actions/delivery.py:98)
- **[critical] Usage of insecure SMTP connection** — \#\# Description  An insecure SMTP connection can expose transmitted data to unauthorized access. This rule identifies if SMTP settings are configured to enforce secure connections.  \#\# Remediations  - **Do** use the 'SMTP_SSL' class to establish secure SMTP connections. This prevents unauthorized access to the data being transmitted.   '''python   smtp = smtplib.SMTP_SSL("smtp.example.com")   '''  \#\# References  - [OWASP insecure transport](https://owasp.org/www-community/vulnerabilities/Insecure (/repo/core/backend/app/email/sender.py:102)
- **[critical] Usage of insecure SMTP connection** — \#\# Description  An insecure SMTP connection can expose transmitted data to unauthorized access. This rule identifies if SMTP settings are configured to enforce secure connections.  \#\# Remediations  - **Do** use the 'SMTP_SSL' class to establish secure SMTP connections. This prevents unauthorized access to the data being transmitted.   '''python   smtp = smtplib.SMTP_SSL("smtp.example.com")   '''  \#\# References  - [OWASP insecure transport](https://owasp.org/www-community/vulnerabilities/Insecure (/repo/core/backend/app/email/sender.py:131)
- **[critical] Missing signature verification of JWT** — \#\# Description  Failing to verify the signature of JSON Web Tokens (JWTs) compromises the security of an application. Signature verification is crucial for confirming the authenticity and integrity of JWTs. Without this verification, your application is open to token forgery and replay attacks, where attackers can manipulate or reuse tokens to gain unauthorized access.  \#\# Remediations  - **Do not** disable verification of the token's signature, because this leaves a significant security gap.    (/repo/core/backend/app/api/beta_admin.py:155)
- **[critical] Missing signature verification of JWT** — \#\# Description  Failing to verify the signature of JSON Web Tokens (JWTs) compromises the security of an application. Signature verification is crucial for confirming the authenticity and integrity of JWTs. Without this verification, your application is open to token forgery and replay attacks, where attackers can manipulate or reuse tokens to gain unauthorized access.  \#\# Remediations  - **Do not** disable verification of the token's signature, because this leaves a significant security gap.    (/repo/core/backend/app/api/beta_portal.py:91)
- **[critical] Missing signature verification of JWT** — \#\# Description  Failing to verify the signature of JSON Web Tokens (JWTs) compromises the security of an application. Signature verification is crucial for confirming the authenticity and integrity of JWTs. Without this verification, your application is open to token forgery and replay attacks, where attackers can manipulate or reuse tokens to gain unauthorized access.  \#\# Remediations  - **Do not** disable verification of the token's signature, because this leaves a significant security gap.    (/repo/core/backend/app/api/license.py:176)
- **[critical] Missing signature verification of JWT** — \#\# Description  Failing to verify the signature of JSON Web Tokens (JWTs) compromises the security of an application. Signature verification is crucial for confirming the authenticity and integrity of JWTs. Without this verification, your application is open to token forgery and replay attacks, where attackers can manipulate or reuse tokens to gain unauthorized access.  \#\# Remediations  - **Do not** disable verification of the token's signature, because this leaves a significant security gap.    (/repo/core/backend/app/licensing/phone_home.py:57)
- **[critical] Missing signature verification of JWT** — \#\# Description  Failing to verify the signature of JSON Web Tokens (JWTs) compromises the security of an application. Signature verification is crucial for confirming the authenticity and integrity of JWTs. Without this verification, your application is open to token forgery and replay attacks, where attackers can manipulate or reuse tokens to gain unauthorized access.  \#\# Remediations  - **Do not** disable verification of the token's signature, because this leaves a significant security gap.    (/repo/core/backend/app/licensing/renewal.py:83)
- **[critical] Unsanitized user input in OS command** — \#\# Description  Directly incorporating external or user-defined input into an OS command exposes the system to possible command injection attacks. This vulnerability allows attackers to execute unauthorized commands on the operating system, potentially leading to a compromise of system integrity.  \#\# Remediations  - **Do not** use OS commands that include dynamic input directly. Instead, explore safer alternatives such as libraries or built-in functions that achieve the same goal without executi (/repo/benchmarks/vault_overhead.py:51)
- **[critical] Unsanitized user input in OS command** — \#\# Description  Directly incorporating external or user-defined input into an OS command exposes the system to possible command injection attacks. This vulnerability allows attackers to execute unauthorized commands on the operating system, potentially leading to a compromise of system integrity.  \#\# Remediations  - **Do not** use OS commands that include dynamic input directly. Instead, explore safer alternatives such as libraries or built-in functions that achieve the same goal without executi (/repo/core/backend/app/marketplace/cosign_verify.py:67)
- **[critical] Unsanitized user input in OS command** — \#\# Description  Directly incorporating external or user-defined input into an OS command exposes the system to possible command injection attacks. This vulnerability allows attackers to execute unauthorized commands on the operating system, potentially leading to a compromise of system integrity.  \#\# Remediations  - **Do not** use OS commands that include dynamic input directly. Instead, explore safer alternatives such as libraries or built-in functions that achieve the same goal without executi (/repo/core/backend/app/marketplace/sandbox.py:383)
- **[critical] Unsanitized user input in OS command** — \#\# Description  Directly incorporating external or user-defined input into an OS command exposes the system to possible command injection attacks. This vulnerability allows attackers to execute unauthorized commands on the operating system, potentially leading to a compromise of system integrity.  \#\# Remediations  - **Do not** use OS commands that include dynamic input directly. Instead, explore safer alternatives such as libraries or built-in functions that achieve the same goal without executi (/repo/core/backend/app/patches/engine.py:91)
- **[critical] Unsanitized user input in OS command** — \#\# Description  Directly incorporating external or user-defined input into an OS command exposes the system to possible command injection attacks. This vulnerability allows attackers to execute unauthorized commands on the operating system, potentially leading to a compromise of system integrity.  \#\# Remediations  - **Do not** use OS commands that include dynamic input directly. Instead, explore safer alternatives such as libraries or built-in functions that achieve the same goal without executi (/repo/core/backend/app/patches/engine.py:138)
- **[critical] Unsanitized user input in OS command** — \#\# Description  Directly incorporating external or user-defined input into an OS command exposes the system to possible command injection attacks. This vulnerability allows attackers to execute unauthorized commands on the operating system, potentially leading to a compromise of system integrity.  \#\# Remediations  - **Do not** use OS commands that include dynamic input directly. Instead, explore safer alternatives such as libraries or built-in functions that achieve the same goal without executi (/repo/core/backend/app/quality/verifiers/code.py:130)
- **[critical] Unsanitized external input in SQL query** — \#\# Description  Using unsanitized data, such as user input or request data, or externally influenced data passed to a function, in SQL query exposes your application to SQL injection attacks. This vulnerability arises when externally controlled data is directly included in SQL statements without proper sanitation, allowing attackers to manipulate queries and access or modify data.  \#\# Remediations  - **Do not** include raw external input in SQL queries. This practice can lead to SQL injection vu (/repo/core/backend/app/db/session.py:146)
- **[high] Unsanitized dynamic input in file path** — \#\# Description  Using unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.  \#\# Remediations  - **Do not** directly use external input to construct file paths. This can lead to unauthorized file access. - **Do** use a safelist to define accessible paths or directories. Only al (/repo/core/backend/app/api/license.py:43)
- **[high] Unsanitized dynamic input in file path** — \#\# Description  Using unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.  \#\# Remediations  - **Do not** directly use external input to construct file paths. This can lead to unauthorized file access. - **Do** use a safelist to define accessible paths or directories. Only al (/repo/core/backend/app/api/setup.py:217)
- **[high] Unsanitized dynamic input in file path** — \#\# Description  Using unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.  \#\# Remediations  - **Do not** directly use external input to construct file paths. This can lead to unauthorized file access. - **Do** use a safelist to define accessible paths or directories. Only al (/repo/core/backend/app/db/session.py:36)
- **[high] Unsanitized dynamic input in file path** — \#\# Description  Using unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.  \#\# Remediations  - **Do not** directly use external input to construct file paths. This can lead to unauthorized file access. - **Do** use a safelist to define accessible paths or directories. Only al (/repo/core/backend/app/hooks/common.py:165)
- **[high] Unsanitized dynamic input in file path** — \#\# Description  Using unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.  \#\# Remediations  - **Do not** directly use external input to construct file paths. This can lead to unauthorized file access. - **Do** use a safelist to define accessible paths or directories. Only al (/repo/core/backend/app/hooks/common.py:166)
- **[high] Unsanitized dynamic input in file path** — \#\# Description  Using unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.  \#\# Remediations  - **Do not** directly use external input to construct file paths. This can lead to unauthorized file access. - **Do** use a safelist to define accessible paths or directories. Only al (/repo/core/backend/app/licensing/keys.py:42)
- **[high] Unsanitized dynamic input in file path** — \#\# Description  Using unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.  \#\# Remediations  - **Do not** directly use external input to construct file paths. This can lead to unauthorized file access. - **Do** use a safelist to define accessible paths or directories. Only al (/repo/core/backend/app/licensing/keys.py:50)
- **[high] Unsanitized dynamic input in file path** — \#\# Description  Using unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.  \#\# Remediations  - **Do not** directly use external input to construct file paths. This can lead to unauthorized file access. - **Do** use a safelist to define accessible paths or directories. Only al (/repo/core/backend/app/licensing/keys.py:69)
- **[high] Unsanitized dynamic input in file path** — \#\# Description  Using unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.  \#\# Remediations  - **Do not** directly use external input to construct file paths. This can lead to unauthorized file access. - **Do** use a safelist to define accessible paths or directories. Only al (/repo/core/backend/app/licensing/keys.py:70)
- **[high] Unsanitized dynamic input in file path** — \#\# Description  Using unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.  \#\# Remediations  - **Do not** directly use external input to construct file paths. This can lead to unauthorized file access. - **Do** use a safelist to define accessible paths or directories. Only al (/repo/core/backend/app/licensing/keys.py:72)
- **[high] Unsanitized dynamic input in file path** — \#\# Description  Using unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.  \#\# Remediations  - **Do not** directly use external input to construct file paths. This can lead to unauthorized file access. - **Do** use a safelist to define accessible paths or directories. Only al (/repo/core/backend/app/licensing/keys.py:73)
- **[high] Unsanitized dynamic input in file path** — \#\# Description  Using unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.  \#\# Remediations  - **Do not** directly use external input to construct file paths. This can lead to unauthorized file access. - **Do** use a safelist to define accessible paths or directories. Only al (/repo/core/backend/app/meeting/capture_service.py:201)
- **[high] Unsanitized dynamic input in file path** — \#\# Description  Using unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.  \#\# Remediations  - **Do not** directly use external input to construct file paths. This can lead to unauthorized file access. - **Do** use a safelist to define accessible paths or directories. Only al (/repo/core/backend/app/meeting/transcribe.py:63)
- **[high] Unsanitized dynamic input in file path** — \#\# Description  Using unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.  \#\# Remediations  - **Do not** directly use external input to construct file paths. This can lead to unauthorized file access. - **Do** use a safelist to define accessible paths or directories. Only al (/repo/core/backend/app/meeting/transcribe.py:177)
- **[high] Unsanitized dynamic input in file path** — \#\# Description  Using unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.  \#\# Remediations  - **Do not** directly use external input to construct file paths. This can lead to unauthorized file access. - **Do** use a safelist to define accessible paths or directories. Only al (/repo/core/backend/app/meeting/transcribe.py:243)
- **[high] Unsanitized dynamic input in file path** — \#\# Description  Using unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.  \#\# Remediations  - **Do not** directly use external input to construct file paths. This can lead to unauthorized file access. - **Do** use a safelist to define accessible paths or directories. Only al (/repo/core/backend/app/meeting/upload_manual.py:72)
- **[high] Unsanitized dynamic input in file path** — \#\# Description  Using unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.  \#\# Remediations  - **Do not** directly use external input to construct file paths. This can lead to unauthorized file access. - **Do** use a safelist to define accessible paths or directories. Only al (/repo/core/backend/app/observability/ragas_eval.py:263)
- **[high] Unsanitized dynamic input in file path** — \#\# Description  Using unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.  \#\# Remediations  - **Do not** directly use external input to construct file paths. This can lead to unauthorized file access. - **Do** use a safelist to define accessible paths or directories. Only al (/repo/core/backend/app/observability/ragas_eval.py:272)
- **[high] Unsanitized dynamic input in file path** — \#\# Description  Using unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.  \#\# Remediations  - **Do not** directly use external input to construct file paths. This can lead to unauthorized file access. - **Do** use a safelist to define accessible paths or directories. Only al (/repo/core/backend/app/observability/ragas_eval.py:281)
- **[high] Unsanitized dynamic input in file path** — \#\# Description  Using unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.  \#\# Remediations  - **Do not** directly use external input to construct file paths. This can lead to unauthorized file access. - **Do** use a safelist to define accessible paths or directories. Only al (/repo/core/backend/app/patches/engine.py:128)
- **[high] Unsanitized dynamic input in file path** — \#\# Description  Using unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.  \#\# Remediations  - **Do not** directly use external input to construct file paths. This can lead to unauthorized file access. - **Do** use a safelist to define accessible paths or directories. Only al (/repo/core/backend/app/patches/engine.py:147)
- **[high] Unsanitized dynamic input in file path** — \#\# Description  Using unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.  \#\# Remediations  - **Do not** directly use external input to construct file paths. This can lead to unauthorized file access. - **Do** use a safelist to define accessible paths or directories. Only al (/repo/core/backend/app/patches/engine.py:163)
- **[high] Unsanitized dynamic input in file path** — \#\# Description  Using unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.  \#\# Remediations  - **Do not** directly use external input to construct file paths. This can lead to unauthorized file access. - **Do** use a safelist to define accessible paths or directories. Only al (/repo/scripts/audit_test_data.py:83)
- **[high] Unsanitized dynamic input in file path** — \#\# Description  Using unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.  \#\# Remediations  - **Do not** directly use external input to construct file paths. This can lead to unauthorized file access. - **Do** use a safelist to define accessible paths or directories. Only al (/repo/scripts/audit_test_data.py:84)
- **[high] Unsanitized dynamic input in file path** — \#\# Description  Using unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.  \#\# Remediations  - **Do not** directly use external input to construct file paths. This can lead to unauthorized file access. - **Do** use a safelist to define accessible paths or directories. Only al (/repo/scripts/eval/cost_calculator.py:254)
- **[high] Usage of weak Pseudo-Random Number Generator (PRNG)** — \#\# Description  The 'random' module in Python generates pseudorandom numbers that are not secure for cryptographic purposes. These numbers can be predicted if the seed is known, posing a risk to the security of applications that use them for generating secrets, tokens, or other security-sensitive elements.  \#\# Remediations  - **Do** use 'secrets' instead of 'random' for generating random numbers in contexts where security is crucial. This ensures the randomness is cryptographically secure and un (/repo/core/backend/app/api/stream.py:58)
- **[high] Usage of weak Pseudo-Random Number Generator (PRNG)** — \#\# Description  The 'random' module in Python generates pseudorandom numbers that are not secure for cryptographic purposes. These numbers can be predicted if the seed is known, posing a risk to the security of applications that use them for generating secrets, tokens, or other security-sensitive elements.  \#\# Remediations  - **Do** use 'secrets' instead of 'random' for generating random numbers in contexts where security is crucial. This ensures the randomness is cryptographically secure and un (/repo/core/backend/app/api/stream.py:59)
- **[high] Usage of weak Pseudo-Random Number Generator (PRNG)** — \#\# Description  The 'random' module in Python generates pseudorandom numbers that are not secure for cryptographic purposes. These numbers can be predicted if the seed is known, posing a risk to the security of applications that use them for generating secrets, tokens, or other security-sensitive elements.  \#\# Remediations  - **Do** use 'secrets' instead of 'random' for generating random numbers in contexts where security is crucial. This ensures the randomness is cryptographically secure and un (/repo/core/backend/app/api/stream.py:60)
- **[high] Usage of weak Pseudo-Random Number Generator (PRNG)** — \#\# Description  The 'random' module in Python generates pseudorandom numbers that are not secure for cryptographic purposes. These numbers can be predicted if the seed is known, posing a risk to the security of applications that use them for generating secrets, tokens, or other security-sensitive elements.  \#\# Remediations  - **Do** use 'secrets' instead of 'random' for generating random numbers in contexts where security is crucial. This ensures the randomness is cryptographically secure and un (/repo/core/backend/app/api/stream.py:61)
- **[high] Usage of weak Pseudo-Random Number Generator (PRNG)** — \#\# Description  The 'random' module in Python generates pseudorandom numbers that are not secure for cryptographic purposes. These numbers can be predicted if the seed is known, posing a risk to the security of applications that use them for generating secrets, tokens, or other security-sensitive elements.  \#\# Remediations  - **Do** use 'secrets' instead of 'random' for generating random numbers in contexts where security is crucial. This ensures the randomness is cryptographically secure and un (/repo/core/backend/app/api/stream.py:62)
- **[high] Usage of weak Pseudo-Random Number Generator (PRNG)** — \#\# Description  The 'random' module in Python generates pseudorandom numbers that are not secure for cryptographic purposes. These numbers can be predicted if the seed is known, posing a risk to the security of applications that use them for generating secrets, tokens, or other security-sensitive elements.  \#\# Remediations  - **Do** use 'secrets' instead of 'random' for generating random numbers in contexts where security is crucial. This ensures the randomness is cryptographically secure and un (/repo/core/backend/app/api/stream.py:63)
- **[high] Usage of weak Pseudo-Random Number Generator (PRNG)** — \#\# Description  The 'random' module in Python generates pseudorandom numbers that are not secure for cryptographic purposes. These numbers can be predicted if the seed is known, posing a risk to the security of applications that use them for generating secrets, tokens, or other security-sensitive elements.  \#\# Remediations  - **Do** use 'secrets' instead of 'random' for generating random numbers in contexts where security is crucial. This ensures the randomness is cryptographically secure and un (/repo/core/backend/app/api/stream.py:64)
- **[high] Usage of weak Pseudo-Random Number Generator (PRNG)** — \#\# Description  The 'random' module in Python generates pseudorandom numbers that are not secure for cryptographic purposes. These numbers can be predicted if the seed is known, posing a risk to the security of applications that use them for generating secrets, tokens, or other security-sensitive elements.  \#\# Remediations  - **Do** use 'secrets' instead of 'random' for generating random numbers in contexts where security is crucial. This ensures the randomness is cryptographically secure and un (/repo/core/backend/app/api/stream.py:65)
- **[high] Usage of weak Pseudo-Random Number Generator (PRNG)** — \#\# Description  The 'random' module in Python generates pseudorandom numbers that are not secure for cryptographic purposes. These numbers can be predicted if the seed is known, posing a risk to the security of applications that use them for generating secrets, tokens, or other security-sensitive elements.  \#\# Remediations  - **Do** use 'secrets' instead of 'random' for generating random numbers in contexts where security is crucial. This ensures the randomness is cryptographically secure and un (/repo/core/backend/app/api/stream.py:148)
- **[high] Usage of weak Pseudo-Random Number Generator (PRNG)** — \#\# Description  The 'random' module in Python generates pseudorandom numbers that are not secure for cryptographic purposes. These numbers can be predicted if the seed is known, posing a risk to the security of applications that use them for generating secrets, tokens, or other security-sensitive elements.  \#\# Remediations  - **Do** use 'secrets' instead of 'random' for generating random numbers in contexts where security is crucial. This ensures the randomness is cryptographically secure and un (/repo/core/backend/app/observability/usage_logger.py:89)
- **[high] Usage of weak Pseudo-Random Number Generator (PRNG)** — \#\# Description  The 'random' module in Python generates pseudorandom numbers that are not secure for cryptographic purposes. These numbers can be predicted if the seed is known, posing a risk to the security of applications that use them for generating secrets, tokens, or other security-sensitive elements.  \#\# Remediations  - **Do** use 'secrets' instead of 'random' for generating random numbers in contexts where security is crucial. This ensures the randomness is cryptographically secure and un (/repo/core/backend/app/providers/anthropic_mock.py:73)
- **[medium] Observable Timing Discrepancy** — \#\# Description  Observable Timing Discrepancy occurs when the time it takes for certain operations to complete can be measured and observed by attackers. This vulnerability is particularly concerning when operations involve sensitive information, such as password checks or secret comparisons. If attackers can analyze how long these operations take, they might be able to deduce confidential details, putting your data at risk.  \#\# Remediations  - **Do** implement algorithms that process sensitive  (/repo/infra/cf-worker/license-activation.js:51)
- **[medium] Observable Timing Discrepancy** — \#\# Description  Observable Timing Discrepancy occurs when the time it takes for certain operations to complete can be measured and observed by attackers. This vulnerability is particularly concerning when operations involve sensitive information, such as password checks or secret comparisons. If attackers can analyze how long these operations take, they might be able to deduce confidential details, putting your data at risk.  \#\# Remediations  - **Do** implement algorithms that process sensitive  (/repo/infra/cf-worker/license-activation.js:97)
- **[medium] Missing HTTP Only option in cookie configuration** — \#\# Description  Not setting the HTTP Only attribute to "true" in cookie configurations leaves the cookie vulnerable to being accessed by client-side JavaScript. This oversight can lead to the exposure of cookie values, especially on websites susceptible to Cross-Site Scripting (XSS) attacks. Enabling HTTP Only is a critical step in preventing malicious scripts from reading the cookie values through JavaScript.  \#\# Remediations  - **Do** set the HTTP Only attribute to 'true' for cookies to preven (/repo/core/backend/app/i18n/__init__.py:83)
- **[medium] Missing Secure option in cookie configuration** — \#\# Description  Not setting the "Secure" attribute in cookie configuration can lead to unauthorized third-party access. This attribute, when enabled, ensures cookies are sent to the server only over HTTPS, enhancing security by preventing potential eavesdropping.  \#\# Remediations  - **Do** set the 'secure' attribute to 'true' to enforce the transmission of cookies over HTTPS only.   '''python   response.set_cookie(secure=True)   ''' (/repo/core/backend/app/i18n/__init__.py:83)
- **[medium] Leakage of sensitive information in logger message** — \#\# Description  Sensitive information leakage through logger messages can compromise data security. This vulnerability arises when sensitive data is inadvertently included in log messages, posing a risk of unauthorized disclosure.  \#\# Remediations  - **Do not** include sensitive data in logger messages. This can lead to unintentional exposure of private information.   '''python   logger.info(f"User is: '{user.email}'") \# unsafe   ''' - **Do** use non-sensitive, unique identifiers to log user inf (/repo/core/backend/app/api/auth.py:520)
- **[medium] Leakage of sensitive information in logger message** — \#\# Description  Sensitive information leakage through logger messages can compromise data security. This vulnerability arises when sensitive data is inadvertently included in log messages, posing a risk of unauthorized disclosure.  \#\# Remediations  - **Do not** include sensitive data in logger messages. This can lead to unintentional exposure of private information.   '''python   logger.info(f"User is: '{user.email}'") \# unsafe   ''' - **Do** use non-sensitive, unique identifiers to log user inf (/repo/core/backend/app/api/auth.py:769)
- **[medium] Leakage of sensitive information in logger message** — \#\# Description  Sensitive information leakage through logger messages can compromise data security. This vulnerability arises when sensitive data is inadvertently included in log messages, posing a risk of unauthorized disclosure.  \#\# Remediations  - **Do not** include sensitive data in logger messages. This can lead to unintentional exposure of private information.   '''python   logger.info(f"User is: '{user.email}'") \# unsafe   ''' - **Do** use non-sensitive, unique identifiers to log user inf (/repo/core/backend/app/api/beta_portal.py:154)
- **[medium] Leakage of sensitive information in logger message** — \#\# Description  Sensitive information leakage through logger messages can compromise data security. This vulnerability arises when sensitive data is inadvertently included in log messages, posing a risk of unauthorized disclosure.  \#\# Remediations  - **Do not** include sensitive data in logger messages. This can lead to unintentional exposure of private information.   '''python   logger.info(f"User is: '{user.email}'") \# unsafe   ''' - **Do** use non-sensitive, unique identifiers to log user inf (/repo/core/backend/app/api/beta_portal.py:160)
- **[medium] Leakage of sensitive information in logger message** — \#\# Description  Sensitive information leakage through logger messages can compromise data security. This vulnerability arises when sensitive data is inadvertently included in log messages, posing a risk of unauthorized disclosure.  \#\# Remediations  - **Do not** include sensitive data in logger messages. This can lead to unintentional exposure of private information.   '''python   logger.info(f"User is: '{user.email}'") \# unsafe   ''' - **Do** use non-sensitive, unique identifiers to log user inf (/repo/core/backend/app/api/claude_code_hooks.py:198)
- **[medium] Leakage of sensitive information in logger message** — \#\# Description  Sensitive information leakage through logger messages can compromise data security. This vulnerability arises when sensitive data is inadvertently included in log messages, posing a risk of unauthorized disclosure.  \#\# Remediations  - **Do not** include sensitive data in logger messages. This can lead to unintentional exposure of private information.   '''python   logger.info(f"User is: '{user.email}'") \# unsafe   ''' - **Do** use non-sensitive, unique identifiers to log user inf (/repo/core/backend/app/worker/inngest_app.py:67)
- **[medium] Usage of weak hashing library (SHA-1)** — \#\# Description  Using a weak hashing library like SHA-1 increases the risk of data breaches. SHA-1 in particular is vulnerable to collision attacks, where two different inputs can produce the same hash value, compromising data integrity and security.  \#\# Remediations  - **Do not** use SHA-1 for hashing. It is no longer considered secure due to its vulnerability to collision attacks.   '''python   hashlib.sha1('password').digest() \# unsafe   ''' - **Do** opt for stronger hashing algorithms such a (/repo/core/backend/app/rag/pipeline_v10.py:126)
- **[medium] Usage of weak hashing library (SHA-1)** — \#\# Description  Using a weak hashing library like SHA-1 increases the risk of data breaches. SHA-1 in particular is vulnerable to collision attacks, where two different inputs can produce the same hash value, compromising data integrity and security.  \#\# Remediations  - **Do not** use SHA-1 for hashing. It is no longer considered secure due to its vulnerability to collision attacks.   '''python   hashlib.sha1('password').digest() \# unsafe   ''' - **Do** opt for stronger hashing algorithms such a (/repo/core/backend/app/rag/reranker.py:202)
- **[medium] Usage of weak hashing library (SHA-1)** — \#\# Description  Using a weak hashing library like SHA-1 increases the risk of data breaches. SHA-1 in particular is vulnerable to collision attacks, where two different inputs can produce the same hash value, compromising data integrity and security.  \#\# Remediations  - **Do not** use SHA-1 for hashing. It is no longer considered secure due to its vulnerability to collision attacks.   '''python   hashlib.sha1('password').digest() \# unsafe   ''' - **Do** opt for stronger hashing algorithms such a (/repo/core/backend/app/watcher/sources.py:40)
- **[low] Usage of insufficient random value** — \#\# Description  Using predictable random values compromises your application's security, particularly if these values serve security-related functions.  \#\# Remediations  - **Do** use a robust library for generating random values to enhance security.   '''javascript   const crypto = require('crypto');   crypto.randomBytes(16).toString('hex');   ''' (/repo/benchmarks/k6/abs_load.js:72)
- **[low] Usage of insufficient random value** — \#\# Description  Using predictable random values compromises your application's security, particularly if these values serve security-related functions.  \#\# Remediations  - **Do** use a robust library for generating random values to enhance security.   '''javascript   const crypto = require('crypto');   crypto.randomBytes(16).toString('hex');   ''' (/repo/benchmarks/k6/abs_load.js:103)
- **[low] Usage of insufficient random value** — \#\# Description  Using predictable random values compromises your application's security, particularly if these values serve security-related functions.  \#\# Remediations  - **Do** use a robust library for generating random values to enhance security.   '''javascript   const crypto = require('crypto');   crypto.randomBytes(16).toString('hex');   ''' (/repo/core/landing/components/HeroScene3D.tsx:151)
- **[low] Usage of insufficient random value** — \#\# Description  Using predictable random values compromises your application's security, particularly if these values serve security-related functions.  \#\# Remediations  - **Do** use a robust library for generating random values to enhance security.   '''javascript   const crypto = require('crypto');   crypto.randomBytes(16).toString('hex');   ''' (/repo/core/landing/components/HeroScene3D.tsx:152)
- **[low] Usage of insufficient random value** — \#\# Description  Using predictable random values compromises your application's security, particularly if these values serve security-related functions.  \#\# Remediations  - **Do** use a robust library for generating random values to enhance security.   '''javascript   const crypto = require('crypto');   crypto.randomBytes(16).toString('hex');   ''' (/repo/core/landing/components/HeroScene3D.tsx:170)
- **[low] Leakage of information in logger message** — \#\# Description  Information leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.  \#\# Remediations  - **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.   '''javascript   logger.info('Results: ${data}') // unsafe   ''' - **Do** use loggin (/repo/core/landing/app/api/billing-portal/route.ts:86)
- **[low] Leakage of information in logger message** — \#\# Description  Information leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.  \#\# Remediations  - **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.   '''javascript   logger.info('Results: ${data}') // unsafe   ''' - **Do** use loggin (/repo/core/landing/app/api/checkout/route.ts:100)
- **[low] Leakage of information in logger message** — \#\# Description  Information leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.  \#\# Remediations  - **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.   '''javascript   logger.info('Results: ${data}') // unsafe   ''' - **Do** use loggin (/repo/core/landing/components/MarketplacePanel.tsx:134)
- **[low] Leakage of information in logger message** — \#\# Description  Information leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.  \#\# Remediations  - **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.   '''javascript   logger.info('Results: ${data}') // unsafe   ''' - **Do** use loggin (/repo/core/landing/components/MarketplacePanel.tsx:142)
- **[low] Leakage of information in logger message** — \#\# Description  Information leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.  \#\# Remediations  - **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.   '''javascript   logger.info('Results: ${data}') // unsafe   ''' - **Do** use loggin (/repo/core/landing/components/MarketplacePanel.tsx:161)
- **[low] Leakage of information in logger message** — \#\# Description  Information leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.  \#\# Remediations  - **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.   '''javascript   logger.info('Results: ${data}') // unsafe   ''' - **Do** use loggin (/repo/core/landing/components/MarketplacePanel.tsx:167)
- **[low] Leakage of information in logger message** — \#\# Description  Information leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.  \#\# Remediations  - **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.   '''javascript   logger.info('Results: ${data}') // unsafe   ''' - **Do** use loggin (/repo/scripts/ci_bundle_split_gate.js:12)
- **[low] Leakage of information in logger message** — \#\# Description  Information leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.  \#\# Remediations  - **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.   '''javascript   logger.info('Results: ${data}') // unsafe   ''' - **Do** use loggin (/repo/scripts/ci_bundle_split_gate.js:18)
- **[low] Leakage of information in logger message** — \#\# Description  Information leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.  \#\# Remediations  - **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.   '''javascript   logger.info('Results: ${data}') // unsafe   ''' - **Do** use loggin (/repo/scripts/validate_bundle_split.js:129)
- **[low] Leakage of information in logger message** — \#\# Description  Information leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.  \#\# Remediations  - **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.   '''javascript   logger.info('Results: ${data}') // unsafe   ''' - **Do** use loggin (/repo/scripts/validate_bundle_split.js:132)
- **[low] Leakage of information in logger message** — \#\# Description  Information leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.  \#\# Remediations  - **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.   '''javascript   logger.info('Results: ${data}') // unsafe   ''' - **Do** use loggin (/repo/scripts/validate_bundle_split.js:133)
- **[low] Leakage of information in logger message** — \#\# Description  Information leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.  \#\# Remediations  - **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.   '''javascript   logger.info('Results: ${data}') // unsafe   ''' - **Do** use loggin (/repo/scripts/validate_bundle_split.js:134)
- **[low] Leakage of information in logger message** — \#\# Description  Information leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.  \#\# Remediations  - **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.   '''javascript   logger.info('Results: ${data}') // unsafe   ''' - **Do** use loggin (/repo/scripts/validate_bundle_split.js:137)

### nerlo-behavioral (v0.1.0) — Unsafe / 0.0

- **[high] opt.nerlo-rules.nerlo-py-secret-to-network-egress** — A secret / environment variable / token value flows into a network request (requests / httpx / urllib / socket). This is the postmark-mcp supply-chain exfiltration shape: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host. (/repo/core/backend/app/erp/vanna_app.py:147)
- **[high] opt.nerlo-rules.nerlo-js-secret-to-network-egress** — A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host. (/repo/core/landing/app/admin/audit/page.tsx:55)
- **[high] opt.nerlo-rules.nerlo-js-secret-to-network-egress** — A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host. (/repo/core/landing/app/admin/layout.tsx:39)
- **[high] opt.nerlo-rules.nerlo-js-secret-to-network-egress** — A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host. (/repo/core/landing/app/admin/layout.tsx:69)
- **[high] opt.nerlo-rules.nerlo-js-secret-to-network-egress** — A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host. (/repo/core/landing/app/admin/projects/page.tsx:44)
- **[high] opt.nerlo-rules.nerlo-js-secret-to-network-egress** — A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host. (/repo/core/landing/app/admin/usage/page.tsx:47)
- **[high] opt.nerlo-rules.nerlo-js-secret-to-network-egress** — A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host. (/repo/core/landing/app/admin/users/page.tsx:54)
- **[high] opt.nerlo-rules.nerlo-js-secret-to-network-egress** — A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host. (/repo/core/landing/app/api/marketplace/install/route.ts:17)
- **[high] opt.nerlo-rules.nerlo-js-secret-to-network-egress** — A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host. (/repo/core/landing/app/api/marketplace/plugins/route.ts:36)
- **[high] opt.nerlo-rules.nerlo-js-secret-to-network-egress** — A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host. (/repo/core/landing/app/api/onboarding/event/route.ts:25)
- **[high] opt.nerlo-rules.nerlo-js-secret-to-network-egress** — A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host. (/repo/core/landing/app/api/workflow/execute/route.ts:17)
- **[high] opt.nerlo-rules.nerlo-js-secret-to-network-egress** — A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host. (/repo/core/landing/app/api/workflow/synthesize/route.ts:17)
- **[high] opt.nerlo-rules.nerlo-js-secret-to-network-egress** — A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host. (/repo/core/landing/app/panel/PanelHomeClient.tsx:81)
- **[high] opt.nerlo-rules.nerlo-js-secret-to-network-egress** — A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host. (/repo/core/landing/app/panel/account/page.tsx:87)
- **[high] opt.nerlo-rules.nerlo-js-secret-to-network-egress** — A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host. (/repo/core/landing/app/panel/layout.tsx:37)
- **[high] opt.nerlo-rules.nerlo-js-secret-to-network-egress** — A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host. (/repo/core/landing/app/panel/layout.tsx:53)
- **[high] opt.nerlo-rules.nerlo-js-secret-to-network-egress** — A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host. (/repo/core/landing/app/panel/page.tsx:59)
- **[high] opt.nerlo-rules.nerlo-js-secret-to-network-egress** — A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host. (/repo/core/landing/middleware.ts:35)
- **[high] opt.nerlo-rules.nerlo-js-secret-to-network-egress** — A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host. (/repo/infra/cf-worker/licensing.js:141)

### nerlo-install-instruction (v0.1.0) — Unsafe / 59.0

- **[high] opt.nerlo-rules.nerlo-install-pipe-to-shell** — Documentation instructs piping a downloaded artifact directly into a shell (curl/wget/iwr ... \| bash/sh/iex). This is the curl-pipe-bash install shape used by the ClawHub skill droppers and countless malware loaders — the fetched payload is executed with zero inspection. Confirm this is expected; it is a strong weaponized-documentation signal. (/repo/docs/architecture.md:116)
- **[informational] opt.nerlo-rules.nerlo-install-run-bundled-artifact** — Run-directive inventory: documentation names a run/execute/launch verb next to an opaque-extension artifact ("run resource.txt", "double-click setup.exe") — the FakeGit README shape. On its own it is CONTEXT, not a verdict: the same shape covers a repo's own tracked scripts and its toolchain, which this pattern cannot tell from a bundled payload. Recorded at INFO so a reviewer sees every run directive in one place. (/repo/docs/operations.md:145)
- **[informational] opt.nerlo-rules.nerlo-install-run-bundled-artifact** — Run-directive inventory: documentation names a run/execute/launch verb next to an opaque-extension artifact ("run resource.txt", "double-click setup.exe") — the FakeGit README shape. On its own it is CONTEXT, not a verdict: the same shape covers a repo's own tracked scripts and its toolchain, which this pattern cannot tell from a bundled payload. Recorded at INFO so a reviewer sees every run directive in one place. (/repo/infra/install_native_hooks.sh:7)

### capslock (vv0.3.2) — not_applicable / n/a

No findings.

## 4. Threat Model

Threat model synthesis has not yet run for this scan. This section is generated by the registry's LLM pipeline (Req 22.3) and will appear in the next regeneration of this report.

## 5. Audit Chain

- **Scan job:** `b1534f44-9d16-473e-83df-ab8de95fadc6`
- **Completed:** 2026-08-12T10:26:57.259176+00:00
- **Scanner base image:** `us-central1-docker.pkg.dev/nerlo-vsk-prod/nerlo/scanner-base@sha256:d5aaefa8b517d1f03832091ab094e20dc73160a07ae1102af1b2e395ce6ce852`
- **AI decision log entries:** 1
  - `08d22211-1913-4d5b-8c0f-8eb92c448328`

## 6. Appendix — Raw Scanner Output

```json
[
  {
    "scanner_name": "agentshield",
    "scanner_version": "1.4.0",
    "score": 100.0,
    "scanner_badge": "Verified",
    "findings": [],
    "execution_duration_seconds": 0.5851732320152223,
    "status": "complete",
    "examined": {
      "unit": "scan_targets",
      "count": 1
    },
    "metadata": {
      "source": "npm",
      "source_url": "https://www.npmjs.com/package/ecc-agentshield",
      "install_command": "npm install -g ecc-agentshield@1.4.0",
      "scans_performed": [
        "supply_chain"
      ]
    },
    "display_score": 100.0,
    "display_badge": "Verified"
  },
  {
    "scanner_name": "cisco-skill-scanner",
    "scanner_version": "2.0.11",
    "score": 0.0,
    "scanner_badge": "Unsafe",
    "findings": [
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "policy_violation",
        "file_path": "/repo",
        "line_number": null,
        "rule_identifier": "LOW_ANALYZABILITY",
        "title": "Moderate analyzability score",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Only 82% of skill content could be analyzed. 325 of 1703 files are opaque to the scanner. Some content could not be verified as safe.",
        "remediation": "Review opaque files and replace with inspectable formats where possible."
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "low",
        "category": "policy_violation",
        "file_path": "/repo/.",
        "line_number": null,
        "rule_identifier": "EXCESSIVE_FILE_COUNT",
        "title": "Skill package contains many files",
        "description": "Skill package contains 1703 files. Large file counts increase attack surface and may indicate bundled dependencies or unnecessary content.",
        "remediation": "Review file inventory and remove unnecessary files."
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "low",
        "category": "obfuscation",
        "file_path": "/repo/.env.demo",
        "line_number": null,
        "rule_identifier": "HIDDEN_DATA_FILE",
        "title": "Hidden data file detected",
        "description": "Hidden file found: .env.demo. Hidden files may contain concealed configuration or data that should be reviewed.",
        "remediation": "Move file to a visible location or document its purpose."
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "low",
        "category": "obfuscation",
        "file_path": "/repo/.fs-scan-allowlist.yaml",
        "line_number": null,
        "rule_identifier": "HIDDEN_DATA_FILE",
        "title": "Hidden data file detected",
        "description": "Hidden file found: .fs-scan-allowlist.yaml. Hidden files may contain concealed configuration or data that should be reviewed.",
        "remediation": "Move file to a visible location or document its purpose."
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "medium",
        "category": "unauthorized_tool_use",
        "file_path": "/repo/repo/CHANGELOG.md",
        "line_number": null,
        "rule_identifier": "TOOL_ABUSE_UNDECLARED_NETWORK",
        "title": "Undeclared network usage",
        "description": "Skill code uses network libraries but doesn't declare network requirement",
        "remediation": "Declare network usage in compatibility field or remove network calls"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "medium",
        "category": "command_injection",
        "file_path": "/repo/README.es.md",
        "line_number": 14,
        "rule_identifier": "COMPOUND_FETCH_EXECUTE",
        "title": "Remote fetch followed by execution",
        "description": "Content is downloaded from the network and subsequently executed. This is a classic remote code execution attack pattern. (found in documentation \u2014 may be instructional)",
        "remediation": "Review the command sequence for potential multi-step attacks. Ensure all steps are necessary and safe."
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "medium",
        "category": "command_injection",
        "file_path": "/repo/README.md",
        "line_number": 51,
        "rule_identifier": "COMPOUND_FETCH_EXECUTE",
        "title": "Remote fetch followed by execution",
        "description": "Content is downloaded from the network and subsequently executed. This is a classic remote code execution attack pattern. (found in documentation \u2014 may be instructional)",
        "remediation": "Review the command sequence for potential multi-step attacks. Ensure all steps are necessary and safe."
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "medium",
        "category": "command_injection",
        "file_path": "/repo/README.tr.md",
        "line_number": 14,
        "rule_identifier": "COMPOUND_FETCH_EXECUTE",
        "title": "Remote fetch followed by execution",
        "description": "Content is downloaded from the network and subsequently executed. This is a classic remote code execution attack pattern. (found in documentation \u2014 may be instructional)",
        "remediation": "Review the command sequence for potential multi-step attacks. Ensure all steps are necessary and safe."
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "social_engineering",
        "file_path": "/repo/SKILL.md",
        "line_number": null,
        "rule_identifier": "SOCIAL_ENG_VAGUE_DESCRIPTION",
        "title": "Vague skill description",
        "description": "[mcp_server policy: capability-matches-purpose class; severity low -> informational] Skill description is too short (16 chars). Provide detailed explanation.",
        "remediation": "Provide a clear, detailed description of what the skill does and when to use it"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "policy_violation",
        "file_path": "/repo/SKILL.md",
        "line_number": null,
        "rule_identifier": "MANIFEST_MISSING_LICENSE",
        "title": "Skill does not specify a license",
        "description": "Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.",
        "remediation": "Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "critical",
        "category": "command_injection",
        "file_path": "/repo/SKILL.md",
        "line_number": 599,
        "rule_identifier": "COMPOUND_FETCH_EXECUTE",
        "title": "Remote fetch followed by execution",
        "description": "Content is downloaded from the network and subsequently executed. This is a classic remote code execution attack pattern.",
        "remediation": "Review the command sequence for potential multi-step attacks. Ensure all steps are necessary and safe."
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "critical",
        "category": "command_injection",
        "file_path": "/repo/SKILL.md",
        "line_number": 657,
        "rule_identifier": "COMPOUND_FETCH_EXECUTE",
        "title": "Remote fetch followed by execution",
        "description": "Content is downloaded from the network and subsequently executed. This is a classic remote code execution attack pattern.",
        "remediation": "Review the command sequence for potential multi-step attacks. Ensure all steps are necessary and safe."
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "critical",
        "category": "command_injection",
        "file_path": "/repo/SKILL.md",
        "line_number": 783,
        "rule_identifier": "COMPOUND_FETCH_EXECUTE",
        "title": "Remote fetch followed by execution",
        "description": "Content is downloaded from the network and subsequently executed. This is a classic remote code execution attack pattern.",
        "remediation": "Review the command sequence for potential multi-step attacks. Ensure all steps are necessary and safe."
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "low",
        "category": "obfuscation",
        "file_path": "/repo/cerbos/.cerbos.yaml",
        "line_number": null,
        "rule_identifier": "HIDDEN_DATA_FILE",
        "title": "Hidden data file detected",
        "description": "Hidden file found: cerbos/.cerbos.yaml. Hidden files may contain concealed configuration or data that should be reviewed.",
        "remediation": "Move file to a visible location or document its purpose."
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "critical",
        "category": "command_injection",
        "file_path": "/repo/core/backend/alembic/env.py",
        "line_number": 74,
        "rule_identifier": "YARA_sql_injection_generic",
        "title": "INJECTION ATTACK detected by YARA",
        "description": "Detects SQL injection attack patterns including keywords, tautologies, and database functions: SELECT name FROM sqlite_master \"\n            \"WHERE type='table' AND name='alembic_version' LIMIT 1\"",
        "remediation": "Review and remove injection attack pattern"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "critical",
        "category": "command_injection",
        "file_path": "/repo/core/backend/alembic/env.py",
        "line_number": 79,
        "rule_identifier": "YARA_sql_injection_generic",
        "title": "INJECTION ATTACK detected by YARA",
        "description": "Detects SQL injection attack patterns including keywords, tautologies, and database functions: SELECT 1 FROM information_schema",
        "remediation": "Review and remove injection attack pattern"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "medium",
        "category": "command_injection",
        "file_path": "/repo/core/backend/app/api/admin/settings_store.py",
        "line_number": 89,
        "rule_identifier": "YARA_code_execution_generic",
        "title": "CODE EXECUTION detected by YARA",
        "description": "Detects dangerous code execution patterns with untrusted input in agent skills: HTTPException(413, \"settings_payload_too_large\")\n    with Session(get_engine()) as db:\n        row =",
        "remediation": "Review and remove code execution pattern"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "medium",
        "category": "obfuscation",
        "file_path": "/repo/core/backend/app/email/templates/account_delete_confirm_en.html",
        "line_number": null,
        "rule_identifier": "FILE_MAGIC_MISMATCH",
        "title": "File extension does not match actual content type",
        "description": "File 'account_delete_confirm_en.html' extension (.html) suggests one format but Magika detected a different text format: Jinja template (jinja). This may indicate content obfuscation or a misnamed file.",
        "remediation": "Rename the file to match its actual content type, or remove it if it appears malicious."
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "medium",
        "category": "prompt_injection",
        "file_path": "/repo/core/backend/app/email/templates/beta_check_in_tr.html",
        "line_number": 21,
        "rule_identifier": "ASSET_PROMPT_INJECTION",
        "title": "Turkish role-switch prompt pattern in asset file",
        "description": "Pattern 'bundan sonra...' detected in asset file",
        "remediation": "Review the asset file and remove any malicious or unnecessary dynamic patterns"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "medium",
        "category": "obfuscation",
        "file_path": "/repo/core/backend/app/email/templates/beta_first_success_es.html",
        "line_number": null,
        "rule_identifier": "FILE_MAGIC_MISMATCH",
        "title": "File extension does not match actual content type",
        "description": "File 'beta_first_success_es.html' extension (.html) suggests one format but Magika detected a different text format: Twig template (twig). This may indicate content obfuscation or a misnamed file.",
        "remediation": "Rename the file to match its actual content type, or remove it if it appears malicious."
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "medium",
        "category": "obfuscation",
        "file_path": "/repo/core/backend/app/email/templates/beta_renewal_offer_tr.html",
        "line_number": null,
        "rule_identifier": "FILE_MAGIC_MISMATCH",
        "title": "File extension does not match actual content type",
        "description": "File 'beta_renewal_offer_tr.html' extension (.html) suggests one format but Magika detected a different text format: Twig template (twig). This may indicate content obfuscation or a misnamed file.",
        "remediation": "Rename the file to match its actual content type, or remove it if it appears malicious."
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "medium",
        "category": "prompt_injection",
        "file_path": "/repo/core/backend/app/email/templates/beta_renewal_offer_tr.html",
        "line_number": 20,
        "rule_identifier": "ASSET_PROMPT_INJECTION",
        "title": "Turkish role-switch prompt pattern in asset file",
        "description": "Pattern 'Bundan sonra...' detected in asset file",
        "remediation": "Review the asset file and remove any malicious or unnecessary dynamic patterns"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "medium",
        "category": "obfuscation",
        "file_path": "/repo/core/backend/app/email/templates/beta_walkthrough_en.html",
        "line_number": null,
        "rule_identifier": "FILE_MAGIC_MISMATCH",
        "title": "File extension does not match actual content type",
        "description": "File 'beta_walkthrough_en.html' extension (.html) suggests one format but Magika detected a different text format: Twig template (twig). This may indicate content obfuscation or a misnamed file.",
        "remediation": "Rename the file to match its actual content type, or remove it if it appears malicious."
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "medium",
        "category": "obfuscation",
        "file_path": "/repo/core/backend/app/email/templates/beta_welcome_en.html",
        "line_number": null,
        "rule_identifier": "FILE_MAGIC_MISMATCH",
        "title": "File extension does not match actual content type",
        "description": "File 'beta_welcome_en.html' extension (.html) suggests one format but Magika detected a different text format: Twig template (twig). This may indicate content obfuscation or a misnamed file.",
        "remediation": "Rename the file to match its actual content type, or remove it if it appears malicious."
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "medium",
        "category": "obfuscation",
        "file_path": "/repo/core/backend/app/email/templates/expiry_warning.html",
        "line_number": null,
        "rule_identifier": "FILE_MAGIC_MISMATCH",
        "title": "File extension does not match actual content type",
        "description": "File 'expiry_warning.html' extension (.html) suggests one format but Magika detected a different text format: Twig template (twig). This may indicate content obfuscation or a misnamed file.",
        "remediation": "Rename the file to match its actual content type, or remove it if it appears malicious."
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "medium",
        "category": "obfuscation",
        "file_path": "/repo/core/backend/app/email/templates/expiry_warning_en.html",
        "line_number": null,
        "rule_identifier": "FILE_MAGIC_MISMATCH",
        "title": "File extension does not match actual content type",
        "description": "File 'expiry_warning_en.html' extension (.html) suggests one format but Magika detected a different text format: Twig template (twig). This may indicate content obfuscation or a misnamed file.",
        "remediation": "Rename the file to match its actual content type, or remove it if it appears malicious."
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "medium",
        "category": "obfuscation",
        "file_path": "/repo/core/backend/app/email/templates/expiry_warning_es.html",
        "line_number": null,
        "rule_identifier": "FILE_MAGIC_MISMATCH",
        "title": "File extension does not match actual content type",
        "description": "File 'expiry_warning_es.html' extension (.html) suggests one format but Magika detected a different text format: Jinja template (jinja). This may indicate content obfuscation or a misnamed file.",
        "remediation": "Rename the file to match its actual content type, or remove it if it appears malicious."
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "medium",
        "category": "obfuscation",
        "file_path": "/repo/core/backend/app/email/templates/expiry_warning_tr.html",
        "line_number": null,
        "rule_identifier": "FILE_MAGIC_MISMATCH",
        "title": "File extension does not match actual content type",
        "description": "File 'expiry_warning_tr.html' extension (.html) suggests one format but Magika detected a different text format: Twig template (twig). This may indicate content obfuscation or a misnamed file.",
        "remediation": "Rename the file to match its actual content type, or remove it if it appears malicious."
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "medium",
        "category": "prompt_injection",
        "file_path": "/repo/core/backend/app/email/templates/first_success.html",
        "line_number": 16,
        "rule_identifier": "ASSET_PROMPT_INJECTION",
        "title": "Turkish role-switch prompt pattern in asset file",
        "description": "Pattern 'Bundan sonra...' detected in asset file",
        "remediation": "Review the asset file and remove any malicious or unnecessary dynamic patterns"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "medium",
        "category": "prompt_injection",
        "file_path": "/repo/core/backend/app/email/templates/first_success_tr.html",
        "line_number": 16,
        "rule_identifier": "ASSET_PROMPT_INJECTION",
        "title": "Turkish role-switch prompt pattern in asset file",
        "description": "Pattern 'Bundan sonra...' detected in asset file",
        "remediation": "Review the asset file and remove any malicious or unnecessary dynamic patterns"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "medium",
        "category": "obfuscation",
        "file_path": "/repo/core/backend/app/email/templates/recovery.html",
        "line_number": null,
        "rule_identifier": "FILE_MAGIC_MISMATCH",
        "title": "File extension does not match actual content type",
        "description": "File 'recovery.html' extension (.html) suggests one format but Magika detected a different text format: Twig template (twig). This may indicate content obfuscation or a misnamed file.",
        "remediation": "Rename the file to match its actual content type, or remove it if it appears malicious."
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "medium",
        "category": "obfuscation",
        "file_path": "/repo/core/backend/app/email/templates/recovery_tr.html",
        "line_number": null,
        "rule_identifier": "FILE_MAGIC_MISMATCH",
        "title": "File extension does not match actual content type",
        "description": "File 'recovery_tr.html' extension (.html) suggests one format but Magika detected a different text format: Twig template (twig). This may indicate content obfuscation or a misnamed file.",
        "remediation": "Rename the file to match its actual content type, or remove it if it appears malicious."
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "medium",
        "category": "obfuscation",
        "file_path": "/repo/core/backend/app/email/templates/welcome.html",
        "line_number": null,
        "rule_identifier": "FILE_MAGIC_MISMATCH",
        "title": "File extension does not match actual content type",
        "description": "File 'welcome.html' extension (.html) suggests one format but Magika detected a different text format: Twig template (twig). This may indicate content obfuscation or a misnamed file.",
        "remediation": "Rename the file to match its actual content type, or remove it if it appears malicious."
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "medium",
        "category": "obfuscation",
        "file_path": "/repo/core/backend/app/email/templates/welcome_en.html",
        "line_number": null,
        "rule_identifier": "FILE_MAGIC_MISMATCH",
        "title": "File extension does not match actual content type",
        "description": "File 'welcome_en.html' extension (.html) suggests one format but Magika detected a different text format: Twig template (twig). This may indicate content obfuscation or a misnamed file.",
        "remediation": "Rename the file to match its actual content type, or remove it if it appears malicious."
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "medium",
        "category": "obfuscation",
        "file_path": "/repo/core/backend/app/email/templates/welcome_tr.html",
        "line_number": null,
        "rule_identifier": "FILE_MAGIC_MISMATCH",
        "title": "File extension does not match actual content type",
        "description": "File 'welcome_tr.html' extension (.html) suggests one format but Magika detected a different text format: Twig template (twig). This may indicate content obfuscation or a misnamed file.",
        "remediation": "Rename the file to match its actual content type, or remove it if it appears malicious."
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/backend/app/erp/vanna_app.py",
        "line_number": 147,
        "rule_identifier": "DATA_EXFIL_NETWORK_REQUESTS",
        "title": "Outbound network request primitives that can transmit data externally",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: httpx.post(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "high",
        "category": "resource_abuse",
        "file_path": "/repo/core/backend/app/main.py",
        "line_number": 269,
        "rule_identifier": "RESOURCE_ABUSE_INFINITE_LOOP",
        "title": "Infinite loop without clear exit condition",
        "description": "Pattern detected: while True:",
        "remediation": "Add proper exit conditions or limits to loops"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/backend/app/quality/verifiers/code.py",
        "line_number": 34,
        "rule_identifier": "DATA_EXFIL_SOCKET_CONNECT",
        "title": "Direct socket connection to external server",
        "description": "[mcp_server policy: capability-matches-purpose class; severity critical -> informational] Pattern detected: socket.create_connection",
        "remediation": "Remove socket connections unless absolutely necessary and documented"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/backend/app/rag/embedding_bge.py",
        "line_number": 295,
        "rule_identifier": "DATA_EXFIL_NETWORK_REQUESTS",
        "title": "Outbound network request primitives that can transmit data externally",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: httpx.get(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "high",
        "category": "resource_abuse",
        "file_path": "/repo/core/backend/app/rag/qdrant_client.py",
        "line_number": 379,
        "rule_identifier": "RESOURCE_ABUSE_INFINITE_LOOP",
        "title": "Infinite loop without clear exit condition",
        "description": "Pattern detected: while True:",
        "remediation": "Add proper exit conditions or limits to loops"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "high",
        "category": "resource_abuse",
        "file_path": "/repo/core/backend/app/rag/qdrant_client.py",
        "line_number": 448,
        "rule_identifier": "RESOURCE_ABUSE_INFINITE_LOOP",
        "title": "Infinite loop without clear exit condition",
        "description": "Pattern detected: while True:",
        "remediation": "Add proper exit conditions or limits to loops"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/backend/app/static/setup/assets/setup.js",
        "line_number": 162,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/backend/app/static/setup/assets/setup.js",
        "line_number": 265,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/backend/app/static/setup/assets/setup.js",
        "line_number": 354,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/backend/app/workflow_v10/approval.py",
        "line_number": 130,
        "rule_identifier": "DATA_EXFIL_NETWORK_REQUESTS",
        "title": "Outbound network request primitives that can transmit data externally",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: requests.get(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/backend/app/workflow_v10/approval.py",
        "line_number": 153,
        "rule_identifier": "DATA_EXFIL_NETWORK_REQUESTS",
        "title": "Outbound network request primitives that can transmit data externally",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: requests.get(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "medium",
        "category": "hardcoded_secrets",
        "file_path": "/repo/core/backend/tests/conftest.py",
        "line_number": 42,
        "rule_identifier": "SECRET_PASSWORD_VAR",
        "title": "Hardcoded password or secret in variable",
        "description": "Pattern detected: secr****",
        "remediation": "Use environment variables or secure vaults for secrets"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "policy_violation",
        "file_path": "/repo/core/backend/tests/fixtures/meeting_demo.wav",
        "line_number": null,
        "rule_identifier": "BINARY_FILE_DETECTED",
        "title": "Binary file detected in skill package",
        "description": "Binary file found: core/backend/tests/fixtures/meeting_demo.wav. Binary files cannot be inspected by static analysis. Consider using Python or Bash scripts for transparency.",
        "remediation": "Review binary file necessity. Replace with auditable scripts if possible."
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/backend/tests/integration/test_cerbos_live.py",
        "line_number": 28,
        "rule_identifier": "DATA_EXFIL_NETWORK_REQUESTS",
        "title": "Outbound network request primitives that can transmit data externally",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: httpx.get(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/backend/tests/integration/test_qdrant_isolation.py",
        "line_number": 24,
        "rule_identifier": "DATA_EXFIL_NETWORK_REQUESTS",
        "title": "Outbound network request primitives that can transmit data externally",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: httpx.get(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/backend/tests/smoke/test_dr_drill.py",
        "line_number": 57,
        "rule_identifier": "DATA_EXFIL_NETWORK_REQUESTS",
        "title": "Outbound network request primitives that can transmit data externally",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: urllib.request.urlopen(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "medium",
        "category": "hardcoded_secrets",
        "file_path": "/repo/core/backend/tests/test_a_pasted_key_is_the_model_you_paid_for.py",
        "line_number": 71,
        "rule_identifier": "SECRET_PASSWORD_VAR",
        "title": "Hardcoded password or secret in variable",
        "description": "Pattern detected: api_****",
        "remediation": "Use environment variables or secure vaults for secrets"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "medium",
        "category": "hardcoded_secrets",
        "file_path": "/repo/core/backend/tests/test_a_pasted_key_is_the_model_you_paid_for.py",
        "line_number": 104,
        "rule_identifier": "SECRET_PASSWORD_VAR",
        "title": "Hardcoded password or secret in variable",
        "description": "Pattern detected: api_****",
        "remediation": "Use environment variables or secure vaults for secrets"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "medium",
        "category": "hardcoded_secrets",
        "file_path": "/repo/core/backend/tests/test_a_pasted_key_is_the_model_you_paid_for.py",
        "line_number": 138,
        "rule_identifier": "SECRET_PASSWORD_VAR",
        "title": "Hardcoded password or secret in variable",
        "description": "Pattern detected: api_****",
        "remediation": "Use environment variables or secure vaults for secrets"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "medium",
        "category": "hardcoded_secrets",
        "file_path": "/repo/core/backend/tests/test_admin_providers_status.py",
        "line_number": 91,
        "rule_identifier": "SECRET_PASSWORD_VAR",
        "title": "Hardcoded password or secret in variable",
        "description": "Pattern detected: secr****",
        "remediation": "Use environment variables or secure vaults for secrets"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "critical",
        "category": "command_injection",
        "file_path": "/repo/core/backend/tests/test_boundary_payload.py",
        "line_number": 84,
        "rule_identifier": "YARA_command_injection_generic",
        "title": "INJECTION ATTACK detected by YARA",
        "description": "Detects command injection patterns in agent skills: shell operators, system commands, and network tools: ;rm -rf /",
        "remediation": "Review and remove injection attack pattern"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "medium",
        "category": "hardcoded_secrets",
        "file_path": "/repo/core/backend/tests/test_delete_token_email_only.py",
        "line_number": 64,
        "rule_identifier": "SECRET_PASSWORD_VAR",
        "title": "Hardcoded password or secret in variable",
        "description": "Pattern detected: toke****",
        "remediation": "Use environment variables or secure vaults for secrets"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "medium",
        "category": "hardcoded_secrets",
        "file_path": "/repo/core/backend/tests/test_final_acceptance.py",
        "line_number": 108,
        "rule_identifier": "SECRET_PASSWORD_VAR",
        "title": "Hardcoded password or secret in variable",
        "description": "Pattern detected: pass****",
        "remediation": "Use environment variables or secure vaults for secrets"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "critical",
        "category": "command_injection",
        "file_path": "/repo/core/backend/tests/test_fuzz.py",
        "line_number": 105,
        "rule_identifier": "YARA_sql_injection_generic",
        "title": "INJECTION ATTACK detected by YARA",
        "description": "Detects SQL injection attack patterns including keywords, tautologies, and database functions: '; DROP TABLE",
        "remediation": "Review and remove injection attack pattern"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "medium",
        "category": "hardcoded_secrets",
        "file_path": "/repo/core/backend/tests/test_github_app.py",
        "line_number": 129,
        "rule_identifier": "SECRET_PASSWORD_VAR",
        "title": "Hardcoded password or secret in variable",
        "description": "Pattern detected: secr****",
        "remediation": "Use environment variables or secure vaults for secrets"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "medium",
        "category": "hardcoded_secrets",
        "file_path": "/repo/core/backend/tests/test_github_app.py",
        "line_number": 166,
        "rule_identifier": "SECRET_PASSWORD_VAR",
        "title": "Hardcoded password or secret in variable",
        "description": "Pattern detected: secr****",
        "remediation": "Use environment variables or secure vaults for secrets"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/backend/tests/test_mcp_transport_live.py",
        "line_number": 73,
        "rule_identifier": "DATA_EXFIL_NETWORK_REQUESTS",
        "title": "Outbound network request primitives that can transmit data externally",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: urllib.request.Request(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/backend/tests/test_mcp_transport_live.py",
        "line_number": 77,
        "rule_identifier": "DATA_EXFIL_NETWORK_REQUESTS",
        "title": "Outbound network request primitives that can transmit data externally",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: urllib.request.urlopen(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/backend/tests/test_mcp_transport_live.py",
        "line_number": 200,
        "rule_identifier": "DATA_EXFIL_NETWORK_REQUESTS",
        "title": "Outbound network request primitives that can transmit data externally",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: urllib.request.urlopen(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "medium",
        "category": "hardcoded_secrets",
        "file_path": "/repo/core/backend/tests/test_prod_secret_guard.py",
        "line_number": 58,
        "rule_identifier": "SECRET_PASSWORD_VAR",
        "title": "Hardcoded password or secret in variable",
        "description": "Pattern detected: secr****",
        "remediation": "Use environment variables or secure vaults for secrets"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "medium",
        "category": "hardcoded_secrets",
        "file_path": "/repo/core/backend/tests/test_prod_secret_guard.py",
        "line_number": 67,
        "rule_identifier": "SECRET_PASSWORD_VAR",
        "title": "Hardcoded password or secret in variable",
        "description": "Pattern detected: pass****",
        "remediation": "Use environment variables or secure vaults for secrets"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "medium",
        "category": "hardcoded_secrets",
        "file_path": "/repo/core/backend/tests/test_provider_save.py",
        "line_number": 85,
        "rule_identifier": "SECRET_PASSWORD_VAR",
        "title": "Hardcoded password or secret in variable",
        "description": "Pattern detected: secr****",
        "remediation": "Use environment variables or secure vaults for secrets"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "medium",
        "category": "hardcoded_secrets",
        "file_path": "/repo/core/backend/tests/test_setup_wizard_full_sweep.py",
        "line_number": 117,
        "rule_identifier": "SECRET_PASSWORD_VAR",
        "title": "Hardcoded password or secret in variable",
        "description": "Pattern detected: pass****",
        "remediation": "Use environment variables or secure vaults for secrets"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "medium",
        "category": "hardcoded_secrets",
        "file_path": "/repo/core/backend/tests/test_setup_wizard_full_sweep.py",
        "line_number": 203,
        "rule_identifier": "SECRET_PASSWORD_VAR",
        "title": "Hardcoded password or secret in variable",
        "description": "Pattern detected: pass****",
        "remediation": "Use environment variables or secure vaults for secrets"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "medium",
        "category": "hardcoded_secrets",
        "file_path": "/repo/core/backend/tests/test_stack_trace_exposure.py",
        "line_number": 34,
        "rule_identifier": "SECRET_PASSWORD_VAR",
        "title": "Hardcoded password or secret in variable",
        "description": "Pattern detected: pass****",
        "remediation": "Use environment variables or secure vaults for secrets"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "medium",
        "category": "hardcoded_secrets",
        "file_path": "/repo/core/backend/tests/test_sweep2_webhook_signature.py",
        "line_number": 146,
        "rule_identifier": "SECRET_PASSWORD_VAR",
        "title": "Hardcoded password or secret in variable",
        "description": "Pattern detected: secr****",
        "remediation": "Use environment variables or secure vaults for secrets"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "medium",
        "category": "hardcoded_secrets",
        "file_path": "/repo/core/backend/tests/test_sweep4_setup_admin.py",
        "line_number": 212,
        "rule_identifier": "SECRET_PASSWORD_VAR",
        "title": "Hardcoded password or secret in variable",
        "description": "Pattern detected: pwd ****",
        "remediation": "Use environment variables or secure vaults for secrets"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "critical",
        "category": "command_injection",
        "file_path": "/repo/core/backend/tests/test_workflow_conditional.py",
        "line_number": 4,
        "rule_identifier": "COMMAND_INJECTION_EVAL",
        "title": "Dangerous code execution functions that can execute arbitrary code",
        "description": "Pattern detected: eval(",
        "remediation": "Avoid eval(), exec(), and compile(). Use safer alternatives like ast.literal_eval() or operator module"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/backend/tests/test_workflow_conditional.py",
        "line_number": 52,
        "rule_identifier": "DATA_EXFIL_SENSITIVE_FILES",
        "title": "Opening sensitive system or credential files",
        "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: open('/etc/passwd",
        "remediation": "Do not read credential files or sensitive system files"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/__tests__/ErrorUx.test.ts",
        "line_number": 15,
        "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
        "title": "Node.js filesystem access that could read or write sensitive data",
        "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync(",
        "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/__tests__/i18n-scope.test.ts",
        "line_number": 71,
        "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
        "title": "Node.js filesystem access that could read or write sensitive data",
        "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync(",
        "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/__tests__/playwright/active-drill.spec.ts",
        "line_number": 36,
        "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
        "title": "Node.js filesystem access that could read or write sensitive data",
        "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync(",
        "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/__tests__/playwright/aria-live-deep.spec.ts",
        "line_number": 46,
        "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
        "title": "Node.js filesystem access that could read or write sensitive data",
        "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync(",
        "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/__tests__/playwright/chaos-multi.spec.ts",
        "line_number": 30,
        "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
        "title": "Node.js filesystem access that could read or write sensitive data",
        "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync(",
        "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/__tests__/playwright/chaos.spec.ts",
        "line_number": 21,
        "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
        "title": "Node.js filesystem access that could read or write sensitive data",
        "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync(",
        "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/__tests__/playwright/cold-cache.spec.ts",
        "line_number": 97,
        "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
        "title": "Node.js filesystem access that could read or write sensitive data",
        "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync(",
        "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/__tests__/playwright/long-running.spec.ts",
        "line_number": 53,
        "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
        "title": "Node.js filesystem access that could read or write sensitive data",
        "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync(",
        "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/__tests__/playwright/long-running.spec.ts",
        "line_number": 155,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/__tests__/playwright/long-running.spec.ts",
        "line_number": 201,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/__tests__/playwright/offline-drafts.spec.ts",
        "line_number": 24,
        "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
        "title": "Node.js filesystem access that could read or write sensitive data",
        "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync(",
        "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/__tests__/playwright/offline-online-stress.spec.ts",
        "line_number": 34,
        "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
        "title": "Node.js filesystem access that could read or write sensitive data",
        "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync(",
        "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/__tests__/playwright/rsc-audit-split-shell.spec.ts",
        "line_number": 35,
        "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
        "title": "Node.js filesystem access that could read or write sensitive data",
        "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync(",
        "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/__tests__/playwright/rsc-panel-home-split-shell.spec.ts",
        "line_number": 34,
        "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
        "title": "Node.js filesystem access that could read or write sensitive data",
        "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync(",
        "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/__tests__/playwright/rsc-users-split-shell.spec.ts",
        "line_number": 29,
        "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
        "title": "Node.js filesystem access that could read or write sensitive data",
        "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync(",
        "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/__tests__/playwright/sw-cache.spec.ts",
        "line_number": 51,
        "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
        "title": "Node.js filesystem access that could read or write sensitive data",
        "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync(",
        "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/__tests__/playwright/sw-cache.spec.ts",
        "line_number": 73,
        "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
        "title": "Node.js filesystem access that could read or write sensitive data",
        "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync(",
        "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/__tests__/playwright/sw-cache.spec.ts",
        "line_number": 86,
        "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
        "title": "Node.js filesystem access that could read or write sensitive data",
        "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync(",
        "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/__tests__/playwright/sw-runtime.spec.ts",
        "line_number": 33,
        "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
        "title": "Node.js filesystem access that could read or write sensitive data",
        "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync(",
        "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/__tests__/playwright/throttled.spec.ts",
        "line_number": 78,
        "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
        "title": "Node.js filesystem access that could read or write sensitive data",
        "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync(",
        "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "policy_violation",
        "file_path": "/repo/core/landing/__tests__/scenarios/fixtures/spoken-meeting.wav",
        "line_number": null,
        "rule_identifier": "BINARY_FILE_DETECTED",
        "title": "Binary file detected in skill package",
        "description": "Binary file found: core/landing/__tests__/scenarios/fixtures/spoken-meeting.wav. Binary files cannot be inspected by static analysis. Consider using Python or Bash scripts for transparency.",
        "remediation": "Review binary file necessity. Replace with auditable scripts if possible."
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/activate/page.tsx",
        "line_number": 40,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/audit/AuditClient.tsx",
        "line_number": 43,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/audit/AuditClient.tsx",
        "line_number": 127,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/audit/page.tsx",
        "line_number": 55,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/dashboard/page.tsx",
        "line_number": 70,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/graph/page.tsx",
        "line_number": 69,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/graph/page.tsx",
        "line_number": 82,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/graph/page.tsx",
        "line_number": 105,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/layout.tsx",
        "line_number": 39,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/layout.tsx",
        "line_number": 69,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/marketplace/page.tsx",
        "line_number": 33,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/marketplace/page.tsx",
        "line_number": 46,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/mcp-servers/page.tsx",
        "line_number": 93,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/mcp-servers/page.tsx",
        "line_number": 122,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/mcp-servers/page.tsx",
        "line_number": 180,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/mcp-servers/page.tsx",
        "line_number": 204,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/mcp-tokens/page.tsx",
        "line_number": 98,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/mcp-tokens/page.tsx",
        "line_number": 113,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/mcp-tokens/page.tsx",
        "line_number": 148,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/mcp-tokens/page.tsx",
        "line_number": 178,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/pipelines/page.tsx",
        "line_number": 190,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/pipelines/page.tsx",
        "line_number": 202,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/projects/page.tsx",
        "line_number": 44,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/provider-keys/page.tsx",
        "line_number": 52,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/provider-keys/page.tsx",
        "line_number": 74,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/provider-keys/page.tsx",
        "line_number": 137,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/providers/page.tsx",
        "line_number": 50,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/providers/page.tsx",
        "line_number": 108,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/providers/page.tsx",
        "line_number": 117,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/rag/page.tsx",
        "line_number": 113,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/rag/page.tsx",
        "line_number": 169,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/rag/page.tsx",
        "line_number": 182,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/rag/page.tsx",
        "line_number": 191,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/rag/page.tsx",
        "line_number": 249,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/rag/page.tsx",
        "line_number": 280,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/rag/page.tsx",
        "line_number": 335,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/settings/page.tsx",
        "line_number": 101,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/settings/page.tsx",
        "line_number": 112,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/settings/page.tsx",
        "line_number": 127,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/settings/page.tsx",
        "line_number": 244,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/settings/page.tsx",
        "line_number": 264,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/settings/page.tsx",
        "line_number": 471,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/settings/page.tsx",
        "line_number": 565,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/settings/page.tsx",
        "line_number": 584,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/settings/page.tsx",
        "line_number": 675,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/settings/page.tsx",
        "line_number": 694,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/settings/page.tsx",
        "line_number": 701,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/usage/UsageClient.tsx",
        "line_number": 71,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/usage/page.tsx",
        "line_number": 47,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/users/UsersClient.tsx",
        "line_number": 51,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/users/UsersClient.tsx",
        "line_number": 84,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/users/UsersClient.tsx",
        "line_number": 103,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/users/UsersClient.tsx",
        "line_number": 129,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/users/UsersClient.tsx",
        "line_number": 142,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/admin/users/page.tsx",
        "line_number": 54,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/api/marketplace/install/route.ts",
        "line_number": 17,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/api/marketplace/plugins/route.ts",
        "line_number": 36,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/api/onboarding/event/route.ts",
        "line_number": 25,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/api/workflow/execute/route.ts",
        "line_number": 17,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/api/workflow/synthesize/route.ts",
        "line_number": 17,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/auth/magic/page.tsx",
        "line_number": 39,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/login/page.tsx",
        "line_number": 46,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/panel/PanelHomeClient.tsx",
        "line_number": 81,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/panel/account/deletion-status/page.tsx",
        "line_number": 20,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/panel/account/page.tsx",
        "line_number": 87,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/panel/agents/page.tsx",
        "line_number": 56,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/panel/approvals/page.tsx",
        "line_number": 84,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/panel/approvals/page.tsx",
        "line_number": 87,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/panel/approvals/page.tsx",
        "line_number": 108,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/panel/approvals/page.tsx",
        "line_number": 133,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/panel/connectors/page.tsx",
        "line_number": 38,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/panel/connectors/page.tsx",
        "line_number": 81,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/panel/connectors/page.tsx",
        "line_number": 87,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/panel/connectors/page.tsx",
        "line_number": 97,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/panel/graph/page.tsx",
        "line_number": 48,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/panel/graph/page.tsx",
        "line_number": 58,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/panel/growth/page.tsx",
        "line_number": 99,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/panel/inbound/page.tsx",
        "line_number": 34,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/panel/inbound/page.tsx",
        "line_number": 49,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/panel/layout.tsx",
        "line_number": 37,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/panel/layout.tsx",
        "line_number": 53,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/panel/leads/page.tsx",
        "line_number": 54,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/panel/leads/page.tsx",
        "line_number": 66,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/panel/leads/page.tsx",
        "line_number": 78,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/panel/leads/page.tsx",
        "line_number": 101,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/panel/meetings/[id]/page.tsx",
        "line_number": 56,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/panel/meetings/page.tsx",
        "line_number": 134,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/panel/meetings/page.tsx",
        "line_number": 166,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/panel/meetings/page.tsx",
        "line_number": 194,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/panel/page.tsx",
        "line_number": 59,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/panel/quota/page.tsx",
        "line_number": 179,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/panel/system/page.tsx",
        "line_number": 47,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/panel/tools/page.tsx",
        "line_number": 103,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/panel/tools/page.tsx",
        "line_number": 133,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/panel/transcription/page.tsx",
        "line_number": 147,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/panel/transcription/page.tsx",
        "line_number": 201,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/panel/workflows/page.tsx",
        "line_number": 124,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/panel/workflows/page.tsx",
        "line_number": 129,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/panel/workflows/page.tsx",
        "line_number": 136,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/panel/workflows/page.tsx",
        "line_number": 140,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/panel/workflows/page.tsx",
        "line_number": 147,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/panel/workflows/page.tsx",
        "line_number": 152,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/panel/workflows/page.tsx",
        "line_number": 214,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/panel/workflows/page.tsx",
        "line_number": 245,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/app/signup/page.tsx",
        "line_number": 35,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/components/BetaRequestForm.tsx",
        "line_number": 37,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/components/CheckoutButton.tsx",
        "line_number": 44,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/components/ConnectPanel.tsx",
        "line_number": 59,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/components/DeletionStatusBanner.tsx",
        "line_number": 130,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/components/ManageModal.tsx",
        "line_number": 64,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/components/MarketplacePanel.tsx",
        "line_number": 48,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/components/MarketplacePanel.tsx",
        "line_number": 125,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/components/MarketplacePanel.tsx",
        "line_number": 153,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/components/admin/ProviderConfigModal.tsx",
        "line_number": 107,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/components/admin/ProviderConfigModal.tsx",
        "line_number": 136,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/components/onboarding/analytics.ts",
        "line_number": 33,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/components/panel/CaptureJobs.tsx",
        "line_number": 79,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/components/panel/CaptureJobs.tsx",
        "line_number": 109,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/components/panel/CaptureJobs.tsx",
        "line_number": 137,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/components/panel/UpdateBanner.tsx",
        "line_number": 41,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/components/panel/UpdateBanner.tsx",
        "line_number": 69,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/components/shell/useShellStatus.ts",
        "line_number": 29,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/components/shell/useShellStatus.ts",
        "line_number": 47,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/components/shell/useShellStatus.ts",
        "line_number": 64,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/lib/chat-stream.ts",
        "line_number": 288,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/lib/chat-stream.ts",
        "line_number": 400,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/lib/chat-stream.ts",
        "line_number": 411,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/lib/chat-stream.ts",
        "line_number": 444,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/lib/chat-stream.ts",
        "line_number": 455,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/lib/chat-stream.ts",
        "line_number": 466,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/middleware.ts",
        "line_number": 35,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "critical",
        "category": "command_injection",
        "file_path": "/repo/core/landing/next.config.ts",
        "line_number": 87,
        "rule_identifier": "COMMAND_INJECTION_EVAL",
        "title": "Dangerous code execution functions that can execute arbitrary code",
        "description": "Pattern detected: compile (",
        "remediation": "Avoid eval(), exec(), and compile(). Use safer alternatives like ast.literal_eval() or operator module"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/public/sw.js",
        "line_number": 80,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/core/landing/public/sw.js",
        "line_number": 97,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/infra/cf-worker/licensing.js",
        "line_number": 141,
        "rule_identifier": "DATA_EXFIL_JS_NETWORK",
        "title": "Outbound network request primitives in JavaScript/TypeScript",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "critical",
        "category": "command_injection",
        "file_path": "/repo/infra/docker-compose.qdrant.yml",
        "line_number": 27,
        "rule_identifier": "YARA_command_injection_generic",
        "title": "INJECTION ATTACK detected by YARA",
        "description": "Detects command injection patterns in agent skills: shell operators, system commands, and network tools: /dev/tcp/127.0.0.1",
        "remediation": "Review and remove injection attack pattern"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "low",
        "category": "obfuscation",
        "file_path": "/repo/infra/helm/abs/.helmignore",
        "line_number": null,
        "rule_identifier": "HIDDEN_DATA_FILE",
        "title": "Hidden data file detected",
        "description": "Hidden file found: infra/helm/abs/.helmignore. Hidden files may contain concealed configuration or data that should be reviewed.",
        "remediation": "Move file to a visible location or document its purpose."
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "medium",
        "category": "obfuscation",
        "file_path": "/repo/infra/nats/nats-server.conf",
        "line_number": null,
        "rule_identifier": "FILE_MAGIC_MISMATCH",
        "title": "File extension does not match actual content type",
        "description": "File 'nats-server.conf' extension (.conf) suggests one format but Magika detected a different text format: Text protocol buffer (textproto). This may indicate content obfuscation or a misnamed file.",
        "remediation": "Rename the file to match its actual content type, or remove it if it appears malicious."
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/infra/piper/server.py",
        "line_number": 84,
        "rule_identifier": "DATA_EXFIL_NETWORK_REQUESTS",
        "title": "Outbound network request primitives that can transmit data externally",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: urllib.request.urlopen(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "high",
        "category": "command_injection",
        "file_path": "/repo/infra/watchdog/deploy.sh",
        "line_number": 1,
        "rule_identifier": "PIPELINE_TAINT_FLOW",
        "title": "Dangerous data flow in command pipeline",
        "description": "Pipeline downloads data from the network and executes it: `curl -fsSL https://example.com/deploy.sh | bash`. This is a remote code execution pattern.",
        "remediation": "Review the command pipeline. Avoid piping sensitive data to network commands or shell execution."
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "critical",
        "category": "command_injection",
        "file_path": "/repo/scripts/chaos/chaos_isolated.sh",
        "line_number": 80,
        "rule_identifier": "YARA_command_injection_generic",
        "title": "INJECTION ATTACK detected by YARA",
        "description": "Detects command injection patterns in agent skills: shell operators, system commands, and network tools: dd if=/dev/zero of=/",
        "remediation": "Review and remove injection attack pattern"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "high",
        "category": "unauthorized_tool_use",
        "file_path": "/repo/scripts/chaos/chaos_isolated.sh",
        "line_number": 80,
        "rule_identifier": "YARA_system_manipulation_generic",
        "title": "SYSTEM MANIPULATION detected by YARA",
        "description": "Detects system manipulation, privilege escalation, and destructive file operations: dd if=/dev/zero of=/",
        "remediation": "Review and remove system manipulation pattern"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "high",
        "category": "hardcoded_secrets",
        "file_path": "/repo/scripts/dr/restore_postgres.sh",
        "line_number": 4,
        "rule_identifier": "SECRET_CONNECTION_STRING",
        "title": "Database connection string with embedded credentials",
        "description": "Pattern detected: post****",
        "remediation": "Remove credentials from connection strings"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/scripts/eval/multimodel_winrate.py",
        "line_number": 99,
        "rule_identifier": "DATA_EXFIL_NETWORK_REQUESTS",
        "title": "Outbound network request primitives that can transmit data externally",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: urllib.request.Request(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "data_exfiltration",
        "file_path": "/repo/scripts/eval/multimodel_winrate.py",
        "line_number": 101,
        "rule_identifier": "DATA_EXFIL_NETWORK_REQUESTS",
        "title": "Outbound network request primitives that can transmit data externally",
        "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: urllib.request.urlopen(",
        "remediation": "Ensure network operations are necessary and document allowed destinations"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "social_engineering",
        "file_path": "/repo/.github/SKILL.md",
        "line_number": null,
        "rule_identifier": "SOCIAL_ENG_VAGUE_DESCRIPTION",
        "title": "Vague skill description",
        "description": "[mcp_server policy: capability-matches-purpose class; severity low -> informational] Skill description is too short (16 chars). Provide detailed explanation.",
        "remediation": "Provide a clear, detailed description of what the skill does and when to use it"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "policy_violation",
        "file_path": "/repo/.github/SKILL.md",
        "line_number": null,
        "rule_identifier": "MANIFEST_INVALID_NAME",
        "title": "Skill name does not follow agent skills naming rules",
        "description": "Skill name '.github' is invalid. Agent skills require lowercase letters, numbers, and hyphens only, with a maximum length of 64 characters.",
        "remediation": "Rename the skill to match `[a-z0-9-]{1,64}` (e.g., 'pdf-processing')"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "policy_violation",
        "file_path": "/repo/.github/SKILL.md",
        "line_number": null,
        "rule_identifier": "MANIFEST_MISSING_LICENSE",
        "title": "Skill does not specify a license",
        "description": "Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.",
        "remediation": "Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "social_engineering",
        "file_path": "/repo/docs/SKILL.md",
        "line_number": null,
        "rule_identifier": "SOCIAL_ENG_VAGUE_DESCRIPTION",
        "title": "Vague skill description",
        "description": "[mcp_server policy: capability-matches-purpose class; severity low -> informational] Skill description is too short (16 chars). Provide detailed explanation.",
        "remediation": "Provide a clear, detailed description of what the skill does and when to use it"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "policy_violation",
        "file_path": "/repo/docs/SKILL.md",
        "line_number": null,
        "rule_identifier": "MANIFEST_MISSING_LICENSE",
        "title": "Skill does not specify a license",
        "description": "Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.",
        "remediation": "Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "medium",
        "category": "unauthorized_tool_use",
        "file_path": "/repo/infra/watchdog/repo/infra/watchdog/README.md",
        "line_number": null,
        "rule_identifier": "TOOL_ABUSE_UNDECLARED_NETWORK",
        "title": "Undeclared network usage",
        "description": "Skill code uses network libraries but doesn't declare network requirement",
        "remediation": "Declare network usage in compatibility field or remove network calls"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "social_engineering",
        "file_path": "/repo/infra/watchdog/SKILL.md",
        "line_number": null,
        "rule_identifier": "SOCIAL_ENG_VAGUE_DESCRIPTION",
        "title": "Vague skill description",
        "description": "[mcp_server policy: capability-matches-purpose class; severity low -> informational] Skill description is too short (16 chars). Provide detailed explanation.",
        "remediation": "Provide a clear, detailed description of what the skill does and when to use it"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "policy_violation",
        "file_path": "/repo/infra/watchdog/SKILL.md",
        "line_number": null,
        "rule_identifier": "MANIFEST_MISSING_LICENSE",
        "title": "Skill does not specify a license",
        "description": "Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.",
        "remediation": "Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "high",
        "category": "command_injection",
        "file_path": "/repo/infra/watchdog/deploy.sh",
        "line_number": 1,
        "rule_identifier": "PIPELINE_TAINT_FLOW",
        "title": "Dangerous data flow in command pipeline",
        "description": "Pipeline downloads data from the network and executes it: `curl -fsSL https://example.com/deploy.sh | bash`. This is a remote code execution pattern.",
        "remediation": "Review the command pipeline. Avoid piping sensitive data to network commands or shell execution."
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "social_engineering",
        "file_path": "/repo/infra/helm/SKILL.md",
        "line_number": null,
        "rule_identifier": "SOCIAL_ENG_VAGUE_DESCRIPTION",
        "title": "Vague skill description",
        "description": "[mcp_server policy: capability-matches-purpose class; severity low -> informational] Skill description is too short (16 chars). Provide detailed explanation.",
        "remediation": "Provide a clear, detailed description of what the skill does and when to use it"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "policy_violation",
        "file_path": "/repo/infra/helm/SKILL.md",
        "line_number": null,
        "rule_identifier": "MANIFEST_MISSING_LICENSE",
        "title": "Skill does not specify a license",
        "description": "Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.",
        "remediation": "Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "low",
        "category": "obfuscation",
        "file_path": "/repo/infra/helm/abs/.helmignore",
        "line_number": null,
        "rule_identifier": "HIDDEN_DATA_FILE",
        "title": "Hidden data file detected",
        "description": "Hidden file found: abs/.helmignore. Hidden files may contain concealed configuration or data that should be reviewed.",
        "remediation": "Move file to a visible location or document its purpose."
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "social_engineering",
        "file_path": "/repo/artifacts/promise_verify/SKILL.md",
        "line_number": null,
        "rule_identifier": "SOCIAL_ENG_VAGUE_DESCRIPTION",
        "title": "Vague skill description",
        "description": "[mcp_server policy: capability-matches-purpose class; severity low -> informational] Skill description is too short (16 chars). Provide detailed explanation.",
        "remediation": "Provide a clear, detailed description of what the skill does and when to use it"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "policy_violation",
        "file_path": "/repo/artifacts/promise_verify/SKILL.md",
        "line_number": null,
        "rule_identifier": "MANIFEST_INVALID_NAME",
        "title": "Skill name does not follow agent skills naming rules",
        "description": "Skill name 'promise_verify' is invalid. Agent skills require lowercase letters, numbers, and hyphens only, with a maximum length of 64 characters.",
        "remediation": "Rename the skill to match `[a-z0-9-]{1,64}` (e.g., 'pdf-processing')"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "policy_violation",
        "file_path": "/repo/artifacts/promise_verify/SKILL.md",
        "line_number": null,
        "rule_identifier": "MANIFEST_MISSING_LICENSE",
        "title": "Skill does not specify a license",
        "description": "Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.",
        "remediation": "Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "social_engineering",
        "file_path": "/repo/docs/operations/SKILL.md",
        "line_number": null,
        "rule_identifier": "SOCIAL_ENG_VAGUE_DESCRIPTION",
        "title": "Vague skill description",
        "description": "[mcp_server policy: capability-matches-purpose class; severity low -> informational] Skill description is too short (16 chars). Provide detailed explanation.",
        "remediation": "Provide a clear, detailed description of what the skill does and when to use it"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "policy_violation",
        "file_path": "/repo/docs/operations/SKILL.md",
        "line_number": null,
        "rule_identifier": "MANIFEST_MISSING_LICENSE",
        "title": "Skill does not specify a license",
        "description": "Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.",
        "remediation": "Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "social_engineering",
        "file_path": "/repo/docs/security/SKILL.md",
        "line_number": null,
        "rule_identifier": "SOCIAL_ENG_VAGUE_DESCRIPTION",
        "title": "Vague skill description",
        "description": "[mcp_server policy: capability-matches-purpose class; severity low -> informational] Skill description is too short (16 chars). Provide detailed explanation.",
        "remediation": "Provide a clear, detailed description of what the skill does and when to use it"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "policy_violation",
        "file_path": "/repo/docs/security/SKILL.md",
        "line_number": null,
        "rule_identifier": "MANIFEST_MISSING_LICENSE",
        "title": "Skill does not specify a license",
        "description": "Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.",
        "remediation": "Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "social_engineering",
        "file_path": "/repo/docs/qa/SKILL.md",
        "line_number": null,
        "rule_identifier": "SOCIAL_ENG_VAGUE_DESCRIPTION",
        "title": "Vague skill description",
        "description": "[mcp_server policy: capability-matches-purpose class; severity low -> informational] Skill description is too short (16 chars). Provide detailed explanation.",
        "remediation": "Provide a clear, detailed description of what the skill does and when to use it"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "policy_violation",
        "file_path": "/repo/docs/qa/SKILL.md",
        "line_number": null,
        "rule_identifier": "MANIFEST_MISSING_LICENSE",
        "title": "Skill does not specify a license",
        "description": "Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.",
        "remediation": "Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "social_engineering",
        "file_path": "/repo/docs/legal/SKILL.md",
        "line_number": null,
        "rule_identifier": "SOCIAL_ENG_VAGUE_DESCRIPTION",
        "title": "Vague skill description",
        "description": "[mcp_server policy: capability-matches-purpose class; severity low -> informational] Skill description is too short (16 chars). Provide detailed explanation.",
        "remediation": "Provide a clear, detailed description of what the skill does and when to use it"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "policy_violation",
        "file_path": "/repo/docs/legal/SKILL.md",
        "line_number": null,
        "rule_identifier": "MANIFEST_MISSING_LICENSE",
        "title": "Skill does not specify a license",
        "description": "Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.",
        "remediation": "Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "social_engineering",
        "file_path": "/repo/docs/architecture/SKILL.md",
        "line_number": null,
        "rule_identifier": "SOCIAL_ENG_VAGUE_DESCRIPTION",
        "title": "Vague skill description",
        "description": "[mcp_server policy: capability-matches-purpose class; severity low -> informational] Skill description is too short (16 chars). Provide detailed explanation.",
        "remediation": "Provide a clear, detailed description of what the skill does and when to use it"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "policy_violation",
        "file_path": "/repo/docs/architecture/SKILL.md",
        "line_number": null,
        "rule_identifier": "MANIFEST_MISSING_LICENSE",
        "title": "Skill does not specify a license",
        "description": "Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.",
        "remediation": "Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "social_engineering",
        "file_path": "/repo/docs/runbooks/SKILL.md",
        "line_number": null,
        "rule_identifier": "SOCIAL_ENG_VAGUE_DESCRIPTION",
        "title": "Vague skill description",
        "description": "[mcp_server policy: capability-matches-purpose class; severity low -> informational] Skill description is too short (16 chars). Provide detailed explanation.",
        "remediation": "Provide a clear, detailed description of what the skill does and when to use it"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "policy_violation",
        "file_path": "/repo/docs/runbooks/SKILL.md",
        "line_number": null,
        "rule_identifier": "MANIFEST_MISSING_LICENSE",
        "title": "Skill does not specify a license",
        "description": "Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.",
        "remediation": "Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "policy_violation",
        "file_path": "/repo/benchmarks/k6",
        "line_number": null,
        "rule_identifier": "LOW_ANALYZABILITY",
        "title": "Critically low analyzability score",
        "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Only 45% of skill content could be analyzed. 1 of 2 files are opaque to the scanner. The safety assessment has low confidence.",
        "remediation": "Replace opaque files (binaries, encrypted content) with inspectable source code to improve scan confidence."
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "social_engineering",
        "file_path": "/repo/benchmarks/k6/SKILL.md",
        "line_number": null,
        "rule_identifier": "SOCIAL_ENG_VAGUE_DESCRIPTION",
        "title": "Vague skill description",
        "description": "[mcp_server policy: capability-matches-purpose class; severity low -> informational] Skill description is too short (16 chars). Provide detailed explanation.",
        "remediation": "Provide a clear, detailed description of what the skill does and when to use it"
      },
      {
        "tool_name": "cisco-skill-scanner",
        "severity": "informational",
        "category": "policy_violation",
        "file_path": "/repo/benchmarks/k6/SKILL.md",
        "line_number": null,
        "rule_identifier": "MANIFEST_MISSING_LICENSE",
        "title": "Skill does not specify a license",
        "description": "Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.",
        "remediation": "Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)"
      }
    ],
    "execution_duration_seconds": 27.27928310603602,
    "status": "complete",
    "examined": {
      "unit": "skills",
      "count": 13
    },
    "metadata": {
      "source": "pypi",
      "source_url": "https://pypi.org/project/cisco-ai-skill-scanner/2.0.11/",
      "report_type": "cisco-skill-sast",
      "analyzers_used": [
        "bytecode",
        "pipeline",
        "static_analyzer"
      ],
      "skills_scanned": [
        "repo",
        ".github",
        "docs",
        "watchdog",
        "helm",
        "promise_verify",
        "operations",
        "security",
        "qa",
        "legal",
        "architecture",
        "runbooks",
        "k6"
      ],
      "install_command": "pip install --require-hashes -r docker/scanner-base/cisco-skill-scanner/requirements.txt",
      "severity_counts": {
        "low": 6,
        "high": 7,
        "medium": 42,
        "critical": 11,
        "informational": 204
      },
      "artifact_type_policy": "mcp_server",
      "downweighted_findings": 187
    },
    "display_score": 0.0,
    "display_badge": "Unsafe"
  },
  {
    "scanner_name": "agent-audit-kit",
    "scanner_version": "0.3.26",
    "score": 0.0,
    "scanner_badge": "Unsafe",
    "findings": [
      {
        "tool_name": "agent-audit-kit",
        "severity": "high",
        "category": "secret-exposure",
        "file_path": "infra/scripts/vault_escrow_setup.sh",
        "line_number": 14,
        "rule_identifier": "AAK-SECRET-004",
        "title": "Generic high-entropy secret",
        "description": "A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key.",
        "remediation": "Move to environment variables or secrets manager."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "high",
        "category": "secret-exposure",
        "file_path": "scripts/eval/multimodel_winrate.py",
        "line_number": 464,
        "rule_identifier": "AAK-SECRET-004",
        "title": "Generic high-entropy secret",
        "description": "A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key.",
        "remediation": "Move to environment variables or secrets manager."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "high",
        "category": "secret-exposure",
        "file_path": "scripts/eval/latency_benchmark.py",
        "line_number": 316,
        "rule_identifier": "AAK-SECRET-004",
        "title": "Generic high-entropy secret",
        "description": "A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key.",
        "remediation": "Move to environment variables or secrets manager."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "high",
        "category": "secret-exposure",
        "file_path": "core/backend/tests/test_v1_magic_claim.py",
        "line_number": 9,
        "rule_identifier": "AAK-SECRET-004",
        "title": "Generic high-entropy secret",
        "description": "A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key.",
        "remediation": "Move to environment variables or secrets manager."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "high",
        "category": "secret-exposure",
        "file_path": "core/backend/tests/test_mcp_transport_live.py",
        "line_number": 42,
        "rule_identifier": "AAK-SECRET-004",
        "title": "Generic high-entropy secret",
        "description": "A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key.",
        "remediation": "Move to environment variables or secrets manager."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "high",
        "category": "secret-exposure",
        "file_path": "core/backend/tests/test_vault_disaster_scenarios.py",
        "line_number": 26,
        "rule_identifier": "AAK-SECRET-004",
        "title": "Generic high-entropy secret",
        "description": "A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key.",
        "remediation": "Move to environment variables or secrets manager."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "high",
        "category": "secret-exposure",
        "file_path": "core/backend/tests/test_vault_disaster_scenarios.py",
        "line_number": 27,
        "rule_identifier": "AAK-SECRET-004",
        "title": "Generic high-entropy secret",
        "description": "A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key.",
        "remediation": "Move to environment variables or secrets manager."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "critical",
        "category": "secret-exposure",
        "file_path": "core/backend/tests/test_dashboard_cache_sanitize.py",
        "line_number": 75,
        "rule_identifier": "AAK-SECRET-002",
        "title": "OpenAI API key exposed",
        "description": "An OpenAI API key (sk-*) was found in a project file.",
        "remediation": "Remove key, rotate immediately, use environment variables."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "critical",
        "category": "secret-exposure",
        "file_path": "core/backend/tests/test_dashboard_cache_sanitize.py",
        "line_number": 75,
        "rule_identifier": "AAK-SECRET-002",
        "title": "OpenAI API key exposed",
        "description": "An OpenAI API key (sk-*) was found in a project file.",
        "remediation": "Remove key, rotate immediately, use environment variables."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "high",
        "category": "secret-exposure",
        "file_path": "core/backend/tests/test_inngest_app.py",
        "line_number": 33,
        "rule_identifier": "AAK-SECRET-004",
        "title": "Generic high-entropy secret",
        "description": "A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key.",
        "remediation": "Move to environment variables or secrets manager."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "high",
        "category": "secret-exposure",
        "file_path": "core/backend/tests/test_vault_migration.py",
        "line_number": 33,
        "rule_identifier": "AAK-SECRET-004",
        "title": "Generic high-entropy secret",
        "description": "A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key.",
        "remediation": "Move to environment variables or secrets manager."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "high",
        "category": "secret-exposure",
        "file_path": "core/backend/scripts/provider_drift_probe.py",
        "line_number": 47,
        "rule_identifier": "AAK-SECRET-004",
        "title": "Generic high-entropy secret",
        "description": "A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key.",
        "remediation": "Move to environment variables or secrets manager."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "high",
        "category": "secret-exposure",
        "file_path": "core/backend/app/api/vault_admin.py",
        "line_number": 37,
        "rule_identifier": "AAK-SECRET-004",
        "title": "Generic high-entropy secret",
        "description": "A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key.",
        "remediation": "Move to environment variables or secrets manager."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "high",
        "category": "secret-exposure",
        "file_path": "core/backend/app/api/status_page.py",
        "line_number": 343,
        "rule_identifier": "AAK-SECRET-004",
        "title": "Generic high-entropy secret",
        "description": "A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key.",
        "remediation": "Move to environment variables or secrets manager."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "high",
        "category": "secret-exposure",
        "file_path": "core/backend/app/rag/embedding_bge.py",
        "line_number": 247,
        "rule_identifier": "AAK-SECRET-004",
        "title": "Generic high-entropy secret",
        "description": "A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key.",
        "remediation": "Move to environment variables or secrets manager."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "high",
        "category": "secret-exposure",
        "file_path": "core/backend/app/static/setup/assets/setup.js",
        "line_number": 300,
        "rule_identifier": "AAK-SECRET-004",
        "title": "Generic high-entropy secret",
        "description": "A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key.",
        "remediation": "Move to environment variables or secrets manager."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "high",
        "category": "secret-exposure",
        "file_path": "core/backend/app/api/admin/auth.py",
        "line_number": 173,
        "rule_identifier": "AAK-SECRET-004",
        "title": "Generic high-entropy secret",
        "description": "A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key.",
        "remediation": "Move to environment variables or secrets manager."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "high",
        "category": "secret-exposure",
        "file_path": "core/backend/app/i18n/locales/en.json",
        "line_number": 44,
        "rule_identifier": "AAK-SECRET-004",
        "title": "Generic high-entropy secret",
        "description": "A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key.",
        "remediation": "Move to environment variables or secrets manager."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "high",
        "category": "secret-exposure",
        "file_path": "core/backend/app/i18n/locales/en.json",
        "line_number": 45,
        "rule_identifier": "AAK-SECRET-004",
        "title": "Generic high-entropy secret",
        "description": "A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key.",
        "remediation": "Move to environment variables or secrets manager."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "high",
        "category": "secret-exposure",
        "file_path": "core/backend/app/i18n/locales/es.json",
        "line_number": 44,
        "rule_identifier": "AAK-SECRET-004",
        "title": "Generic high-entropy secret",
        "description": "A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key.",
        "remediation": "Move to environment variables or secrets manager."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "high",
        "category": "secret-exposure",
        "file_path": "core/backend/app/i18n/locales/es.json",
        "line_number": 45,
        "rule_identifier": "AAK-SECRET-004",
        "title": "Generic high-entropy secret",
        "description": "A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key.",
        "remediation": "Move to environment variables or secrets manager."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "high",
        "category": "secret-exposure",
        "file_path": "core/backend/app/i18n/locales/tr.json",
        "line_number": 44,
        "rule_identifier": "AAK-SECRET-004",
        "title": "Generic high-entropy secret",
        "description": "A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key.",
        "remediation": "Move to environment variables or secrets manager."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "high",
        "category": "secret-exposure",
        "file_path": "core/backend/app/i18n/locales/tr.json",
        "line_number": 45,
        "rule_identifier": "AAK-SECRET-004",
        "title": "Generic high-entropy secret",
        "description": "A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key.",
        "remediation": "Move to environment variables or secrets manager."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "high",
        "category": "secret-exposure",
        "file_path": "core/backend/app/update/manifest_pubkey.pem",
        "line_number": null,
        "rule_identifier": "AAK-SECRET-005",
        "title": "Private key file present",
        "description": "A private key file (*.pem, *.key, id_rsa, etc.) or PEM content was found in the project.",
        "remediation": "Remove private keys from repository, add to .gitignore."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "critical",
        "category": "agent-config",
        "file_path": "CLAUDE.md",
        "line_number": 16,
        "rule_identifier": "AAK-AGENT-001",
        "title": "Agent instruction file contains shell command directives",
        "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
        "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "critical",
        "category": "agent-config",
        "file_path": "CLAUDE.md",
        "line_number": null,
        "rule_identifier": "AAK-AGENT-001",
        "title": "Agent instruction file contains shell command directives",
        "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
        "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "critical",
        "category": "agent-config",
        "file_path": "CLAUDE.md",
        "line_number": null,
        "rule_identifier": "AAK-AGENT-001",
        "title": "Agent instruction file contains shell command directives",
        "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
        "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "critical",
        "category": "agent-config",
        "file_path": "CLAUDE.md",
        "line_number": null,
        "rule_identifier": "AAK-AGENT-001",
        "title": "Agent instruction file contains shell command directives",
        "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
        "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "critical",
        "category": "agent-config",
        "file_path": "CLAUDE.md",
        "line_number": null,
        "rule_identifier": "AAK-AGENT-001",
        "title": "Agent instruction file contains shell command directives",
        "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
        "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "critical",
        "category": "agent-config",
        "file_path": "CLAUDE.md",
        "line_number": null,
        "rule_identifier": "AAK-AGENT-001",
        "title": "Agent instruction file contains shell command directives",
        "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
        "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "critical",
        "category": "agent-config",
        "file_path": "CLAUDE.md",
        "line_number": null,
        "rule_identifier": "AAK-AGENT-001",
        "title": "Agent instruction file contains shell command directives",
        "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
        "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "critical",
        "category": "agent-config",
        "file_path": "CLAUDE.md",
        "line_number": null,
        "rule_identifier": "AAK-AGENT-001",
        "title": "Agent instruction file contains shell command directives",
        "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
        "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "critical",
        "category": "agent-config",
        "file_path": "CLAUDE.md",
        "line_number": null,
        "rule_identifier": "AAK-AGENT-001",
        "title": "Agent instruction file contains shell command directives",
        "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
        "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "legal-compliance",
        "file_path": "package.json",
        "line_number": 1,
        "rule_identifier": "AAK-LEGAL-002",
        "title": "Dependency with no declared license",
        "description": "A dependency has no declared license, creating legal uncertainty about usage rights.",
        "remediation": "Contact the maintainer to clarify licensing or replace with a properly licensed alternative."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "mcp-config",
        "file_path": "core/backend/tests/test_mcp_shell.py",
        "line_number": 9,
        "rule_identifier": "AAK-MCP-018",
        "title": "Missing rate limiting on MCP endpoint",
        "description": "An MCP server endpoint does not declare rate limiting. Unrestricted access allows credential stuffing and enumeration attacks.",
        "remediation": "Add per-IP and per-token rate limits. Reject bursts above the limit with 429."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "mcp-config",
        "file_path": "core/backend/tests/test_external_mcp.py",
        "line_number": 19,
        "rule_identifier": "AAK-MCP-018",
        "title": "Missing rate limiting on MCP endpoint",
        "description": "An MCP server endpoint does not declare rate limiting. Unrestricted access allows credential stuffing and enumeration attacks.",
        "remediation": "Add per-IP and per-token rate limits. Reject bursts above the limit with 429."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "mcp-config",
        "file_path": "core/backend/tests/test_mcp_transport_auth.py",
        "line_number": 2,
        "rule_identifier": "AAK-MCP-018",
        "title": "Missing rate limiting on MCP endpoint",
        "description": "An MCP server endpoint does not declare rate limiting. Unrestricted access allows credential stuffing and enumeration attacks.",
        "remediation": "Add per-IP and per-token rate limits. Reject bursts above the limit with 429."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "mcp-config",
        "file_path": "core/backend/app/mcp/transport_auth.py",
        "line_number": 6,
        "rule_identifier": "AAK-MCP-018",
        "title": "Missing rate limiting on MCP endpoint",
        "description": "An MCP server endpoint does not declare rate limiting. Unrestricted access allows credential stuffing and enumeration attacks.",
        "remediation": "Add per-IP and per-token rate limits. Reject bursts above the limit with 429."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "mcp-config",
        "file_path": "core/backend/app/mcp/server.py",
        "line_number": 142,
        "rule_identifier": "AAK-MCP-018",
        "title": "Missing rate limiting on MCP endpoint",
        "description": "An MCP server endpoint does not declare rate limiting. Unrestricted access allows credential stuffing and enumeration attacks.",
        "remediation": "Add per-IP and per-token rate limits. Reject bursts above the limit with 429."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "mcp-config",
        "file_path": "core/backend/app/mcp/external/federation.py",
        "line_number": 10,
        "rule_identifier": "AAK-MCP-018",
        "title": "Missing rate limiting on MCP endpoint",
        "description": "An MCP server endpoint does not declare rate limiting. Unrestricted access allows credential stuffing and enumeration attacks.",
        "remediation": "Add per-IP and per-token rate limits. Reject bursts above the limit with 429."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "high",
        "category": "mcp-config",
        "file_path": "security_tests/oauth/test_replay.py",
        "line_number": 38,
        "rule_identifier": "AAK-OAUTH-002",
        "title": "PKCE using the plain challenge method",
        "description": "An OAuth client sets code_challenge_method=plain (or omits it). S256 is mandatory; 'plain' leaks the verifier to anyone with access to the authorization request.",
        "remediation": "Set code_challenge_method=S256 and derive code_challenge as BASE64URL(SHA256(code_verifier))."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "mcp-config",
        "file_path": "core/backend/tests/test_sweep4_smart_link_beta.py",
        "line_number": null,
        "rule_identifier": "AAK-OAUTH-005",
        "title": "Bearer token used where DPoP or mTLS is required",
        "description": "An MCP remote server accepts plain Bearer tokens on a flow that MCP spec 2025-11-25 flags for DPoP (Demonstrating Proof of Possession) or mTLS-bound tokens. A stolen Bearer token is fully replayable.",
        "remediation": "Require DPoP proofs or mTLS-bound tokens for high-privilege flows. Validate the token's cnf claim."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "mcp-config",
        "file_path": "core/backend/tests/test_smart_link_slack.py",
        "line_number": null,
        "rule_identifier": "AAK-OAUTH-005",
        "title": "Bearer token used where DPoP or mTLS is required",
        "description": "An MCP remote server accepts plain Bearer tokens on a flow that MCP spec 2025-11-25 flags for DPoP (Demonstrating Proof of Possession) or mTLS-bound tokens. A stolen Bearer token is fully replayable.",
        "remediation": "Require DPoP proofs or mTLS-bound tokens for high-privilege flows. Validate the token's cnf claim."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "mcp-config",
        "file_path": "core/backend/tests/test_mcp_gateway.py",
        "line_number": null,
        "rule_identifier": "AAK-OAUTH-005",
        "title": "Bearer token used where DPoP or mTLS is required",
        "description": "An MCP remote server accepts plain Bearer tokens on a flow that MCP spec 2025-11-25 flags for DPoP (Demonstrating Proof of Possession) or mTLS-bound tokens. A stolen Bearer token is fully replayable.",
        "remediation": "Require DPoP proofs or mTLS-bound tokens for high-privilege flows. Validate the token's cnf claim."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "high",
        "category": "mcp-config",
        "file_path": "core/backend/tests/test_oauth_server.py",
        "line_number": 84,
        "rule_identifier": "AAK-OAUTH-002",
        "title": "PKCE using the plain challenge method",
        "description": "An OAuth client sets code_challenge_method=plain (or omits it). S256 is mandatory; 'plain' leaks the verifier to anyone with access to the authorization request.",
        "remediation": "Set code_challenge_method=S256 and derive code_challenge as BASE64URL(SHA256(code_verifier))."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "mcp-config",
        "file_path": "core/backend/tests/test_smart_link_oauth_prod.py",
        "line_number": null,
        "rule_identifier": "AAK-OAUTH-005",
        "title": "Bearer token used where DPoP or mTLS is required",
        "description": "An MCP remote server accepts plain Bearer tokens on a flow that MCP spec 2025-11-25 flags for DPoP (Demonstrating Proof of Possession) or mTLS-bound tokens. A stolen Bearer token is fully replayable.",
        "remediation": "Require DPoP proofs or mTLS-bound tokens for high-privilege flows. Validate the token's cnf claim."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "mcp-config",
        "file_path": "core/backend/tests/test_rag_cookie_session.py",
        "line_number": null,
        "rule_identifier": "AAK-OAUTH-005",
        "title": "Bearer token used where DPoP or mTLS is required",
        "description": "An MCP remote server accepts plain Bearer tokens on a flow that MCP spec 2025-11-25 flags for DPoP (Demonstrating Proof of Possession) or mTLS-bound tokens. A stolen Bearer token is fully replayable.",
        "remediation": "Require DPoP proofs or mTLS-bound tokens for high-privilege flows. Validate the token's cnf claim."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "mcp-config",
        "file_path": "core/backend/tests/fixtures/golden_eval_multimodel.json",
        "line_number": null,
        "rule_identifier": "AAK-OAUTH-005",
        "title": "Bearer token used where DPoP or mTLS is required",
        "description": "An MCP remote server accepts plain Bearer tokens on a flow that MCP spec 2025-11-25 flags for DPoP (Demonstrating Proof of Possession) or mTLS-bound tokens. A stolen Bearer token is fully replayable.",
        "remediation": "Require DPoP proofs or mTLS-bound tokens for high-privilege flows. Validate the token's cnf claim."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "mcp-config",
        "file_path": "core/backend/app/mcp/transport_auth.py",
        "line_number": null,
        "rule_identifier": "AAK-OAUTH-005",
        "title": "Bearer token used where DPoP or mTLS is required",
        "description": "An MCP remote server accepts plain Bearer tokens on a flow that MCP spec 2025-11-25 flags for DPoP (Demonstrating Proof of Possession) or mTLS-bound tokens. A stolen Bearer token is fully replayable.",
        "remediation": "Require DPoP proofs or mTLS-bound tokens for high-privilege flows. Validate the token's cnf claim."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "mcp-config",
        "file_path": "core/landing/components/ConnectPanel.tsx",
        "line_number": null,
        "rule_identifier": "AAK-OAUTH-005",
        "title": "Bearer token used where DPoP or mTLS is required",
        "description": "An MCP remote server accepts plain Bearer tokens on a flow that MCP spec 2025-11-25 flags for DPoP (Demonstrating Proof of Possession) or mTLS-bound tokens. A stolen Bearer token is fully replayable.",
        "remediation": "Require DPoP proofs or mTLS-bound tokens for high-privilege flows. Validate the token's cnf claim."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "mcp-config",
        "file_path": "core/landing/__tests__/ConnectPanel.test.tsx",
        "line_number": null,
        "rule_identifier": "AAK-OAUTH-005",
        "title": "Bearer token used where DPoP or mTLS is required",
        "description": "An MCP remote server accepts plain Bearer tokens on a flow that MCP spec 2025-11-25 flags for DPoP (Demonstrating Proof of Possession) or mTLS-bound tokens. A stolen Bearer token is fully replayable.",
        "remediation": "Require DPoP proofs or mTLS-bound tokens for high-privilege flows. Validate the token's cnf claim."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "mcp-config",
        "file_path": "core/backend/app/hooks/common.py",
        "line_number": null,
        "rule_identifier": "AAK-TASKS-003",
        "title": "MCP task has no TTL or cancellation path",
        "description": "A task record has no expiration and no cancellation endpoint. Orphaned tasks accumulate forever, including their inputs.",
        "remediation": "Set a TTL on every task; expose a cancellation endpoint that zeroizes inputs and credentials."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "mcp-config",
        "file_path": "core/backend/app/hooks/plan_first.py",
        "line_number": null,
        "rule_identifier": "AAK-TASKS-003",
        "title": "MCP task has no TTL or cancellation path",
        "description": "A task record has no expiration and no cancellation endpoint. Orphaned tasks accumulate forever, including their inputs.",
        "remediation": "Set a TTL on every task; expose a cancellation endpoint that zeroizes inputs and credentials."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "critical",
        "category": "secret-exposure",
        "file_path": "artifacts/promise_verify/latency_benchmark.json",
        "line_number": 130,
        "rule_identifier": "AAK-INDIA-PII-001",
        "title": "Aadhaar number in source / config",
        "description": "A 12-digit Aadhaar number passed the Verhoeff checksum and is embedded in project text. Aadhaar is restricted under the UIDAI Act and India DPDP \u00a78(4). Storing in code is a reportable breach.",
        "remediation": "Remove the Aadhaar number. If Aadhaar is genuinely needed, route it through an encrypted vault (e.g. AWS KMS / Azure Key Vault) and never log or commit it."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "critical",
        "category": "secret-exposure",
        "file_path": "artifacts/promise_verify/latency_benchmark.json",
        "line_number": 256,
        "rule_identifier": "AAK-INDIA-PII-001",
        "title": "Aadhaar number in source / config",
        "description": "A 12-digit Aadhaar number passed the Verhoeff checksum and is embedded in project text. Aadhaar is restricted under the UIDAI Act and India DPDP \u00a78(4). Storing in code is a reportable breach.",
        "remediation": "Remove the Aadhaar number. If Aadhaar is genuinely needed, route it through an encrypted vault (e.g. AWS KMS / Azure Key Vault) and never log or commit it."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "critical",
        "category": "secret-exposure",
        "file_path": "artifacts/promise_verify/latency_benchmark.json",
        "line_number": 592,
        "rule_identifier": "AAK-INDIA-PII-001",
        "title": "Aadhaar number in source / config",
        "description": "A 12-digit Aadhaar number passed the Verhoeff checksum and is embedded in project text. Aadhaar is restricted under the UIDAI Act and India DPDP \u00a78(4). Storing in code is a reportable breach.",
        "remediation": "Remove the Aadhaar number. If Aadhaar is genuinely needed, route it through an encrypted vault (e.g. AWS KMS / Azure Key Vault) and never log or commit it."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "critical",
        "category": "secret-exposure",
        "file_path": "artifacts/promise_verify/latency_benchmark.json",
        "line_number": 844,
        "rule_identifier": "AAK-INDIA-PII-001",
        "title": "Aadhaar number in source / config",
        "description": "A 12-digit Aadhaar number passed the Verhoeff checksum and is embedded in project text. Aadhaar is restricted under the UIDAI Act and India DPDP \u00a78(4). Storing in code is a reportable breach.",
        "remediation": "Remove the Aadhaar number. If Aadhaar is genuinely needed, route it through an encrypted vault (e.g. AWS KMS / Azure Key Vault) and never log or commit it."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "critical",
        "category": "secret-exposure",
        "file_path": "artifacts/promise_verify/latency_benchmark.json",
        "line_number": 984,
        "rule_identifier": "AAK-INDIA-PII-001",
        "title": "Aadhaar number in source / config",
        "description": "A 12-digit Aadhaar number passed the Verhoeff checksum and is embedded in project text. Aadhaar is restricted under the UIDAI Act and India DPDP \u00a78(4). Storing in code is a reportable breach.",
        "remediation": "Remove the Aadhaar number. If Aadhaar is genuinely needed, route it through an encrypted vault (e.g. AWS KMS / Azure Key Vault) and never log or commit it."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "critical",
        "category": "secret-exposure",
        "file_path": "artifacts/promise_verify/latency_benchmark.json",
        "line_number": 1362,
        "rule_identifier": "AAK-INDIA-PII-001",
        "title": "Aadhaar number in source / config",
        "description": "A 12-digit Aadhaar number passed the Verhoeff checksum and is embedded in project text. Aadhaar is restricted under the UIDAI Act and India DPDP \u00a78(4). Storing in code is a reportable breach.",
        "remediation": "Remove the Aadhaar number. If Aadhaar is genuinely needed, route it through an encrypted vault (e.g. AWS KMS / Azure Key Vault) and never log or commit it."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "critical",
        "category": "secret-exposure",
        "file_path": "artifacts/promise_verify/latency_benchmark.json",
        "line_number": 1404,
        "rule_identifier": "AAK-INDIA-PII-001",
        "title": "Aadhaar number in source / config",
        "description": "A 12-digit Aadhaar number passed the Verhoeff checksum and is embedded in project text. Aadhaar is restricted under the UIDAI Act and India DPDP \u00a78(4). Storing in code is a reportable breach.",
        "remediation": "Remove the Aadhaar number. If Aadhaar is genuinely needed, route it through an encrypted vault (e.g. AWS KMS / Azure Key Vault) and never log or commit it."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "legal-compliance",
        "file_path": "docs/vault-recovery-runbook.md",
        "line_number": null,
        "rule_identifier": "AAK-HEALTHCARE-AI-004",
        "title": "Healthcare context without explicit AI-disclosure to user",
        "description": "Text mentions patient / clinical / mental-health / therapy / diagnosis but the tool never explicitly says the responder is an AI. Multiple 2026 state laws (TN, WA, UT) expect clear AI disclosure in clinical interactions.",
        "remediation": "Add a visible 'You are talking to an AI; this is not medical advice and is not a substitute for licensed care' disclosure."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "legal-compliance",
        "file_path": "docs/CUSTOMER_USER_GUIDE.md",
        "line_number": null,
        "rule_identifier": "AAK-HEALTHCARE-AI-004",
        "title": "Healthcare context without explicit AI-disclosure to user",
        "description": "Text mentions patient / clinical / mental-health / therapy / diagnosis but the tool never explicitly says the responder is an AI. Multiple 2026 state laws (TN, WA, UT) expect clear AI disclosure in clinical interactions.",
        "remediation": "Add a visible 'You are talking to an AI; this is not medical advice and is not a substitute for licensed care' disclosure."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "legal-compliance",
        "file_path": "docs/troubleshooting.md",
        "line_number": null,
        "rule_identifier": "AAK-HEALTHCARE-AI-004",
        "title": "Healthcare context without explicit AI-disclosure to user",
        "description": "Text mentions patient / clinical / mental-health / therapy / diagnosis but the tool never explicitly says the responder is an AI. Multiple 2026 state laws (TN, WA, UT) expect clear AI disclosure in clinical interactions.",
        "remediation": "Add a visible 'You are talking to an AI; this is not medical advice and is not a substitute for licensed care' disclosure."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "legal-compliance",
        "file_path": "docs/CLAUDE_CODE_INTEGRATION.md",
        "line_number": null,
        "rule_identifier": "AAK-HEALTHCARE-AI-004",
        "title": "Healthcare context without explicit AI-disclosure to user",
        "description": "Text mentions patient / clinical / mental-health / therapy / diagnosis but the tool never explicitly says the responder is an AI. Multiple 2026 state laws (TN, WA, UT) expect clear AI disclosure in clinical interactions.",
        "remediation": "Add a visible 'You are talking to an AI; this is not medical advice and is not a substitute for licensed care' disclosure."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "high",
        "category": "legal-compliance",
        "file_path": "docs/billing-runbook.md",
        "line_number": 178,
        "rule_identifier": "AAK-HEALTHCARE-AI-005",
        "title": "Crisis keywords handled without escalation path",
        "description": "A healthcare AI surface mentions suicide / self-harm / crisis but never references 988 / 911 / 112 / 999 / a crisis line. Tennessee HB 1951 (2026) creates criminal liability for encouraging suicide; lacking an escalation path materially worsens the exposure.",
        "remediation": "Add explicit crisis-line escalation instructions in the prompt / system message; test for the most common suicide / self-harm phrases and escalate before generating any other reply."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "high",
        "category": "legal-compliance",
        "file_path": "cerbos/policies/principal.user.v1.yaml",
        "line_number": 1,
        "rule_identifier": "AAK-HEALTHCARE-AI-005",
        "title": "Crisis keywords handled without escalation path",
        "description": "A healthcare AI surface mentions suicide / self-harm / crisis but never references 988 / 911 / 112 / 999 / a crisis line. Tennessee HB 1951 (2026) creates criminal liability for encouraging suicide; lacking an escalation path materially worsens the exposure.",
        "remediation": "Add explicit crisis-line escalation instructions in the prompt / system message; test for the most common suicide / self-harm phrases and escalate before generating any other reply."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "high",
        "category": "legal-compliance",
        "file_path": "infra/cerbos/policies/principal.user.v1.yaml",
        "line_number": 1,
        "rule_identifier": "AAK-HEALTHCARE-AI-005",
        "title": "Crisis keywords handled without escalation path",
        "description": "A healthcare AI surface mentions suicide / self-harm / crisis but never references 988 / 911 / 112 / 999 / a crisis line. Tennessee HB 1951 (2026) creates criminal liability for encouraging suicide; lacking an escalation path materially worsens the exposure.",
        "remediation": "Add explicit crisis-line escalation instructions in the prompt / system message; test for the most common suicide / self-harm phrases and escalate before generating any other reply."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "legal-compliance",
        "file_path": "docs/operations/admin-guide.md",
        "line_number": null,
        "rule_identifier": "AAK-HEALTHCARE-AI-004",
        "title": "Healthcare context without explicit AI-disclosure to user",
        "description": "Text mentions patient / clinical / mental-health / therapy / diagnosis but the tool never explicitly says the responder is an AI. Multiple 2026 state laws (TN, WA, UT) expect clear AI disclosure in clinical interactions.",
        "remediation": "Add a visible 'You are talking to an AI; this is not medical advice and is not a substitute for licensed care' disclosure."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "high",
        "category": "legal-compliance",
        "file_path": "docs/security/multi-tenant.md",
        "line_number": 32,
        "rule_identifier": "AAK-HEALTHCARE-AI-005",
        "title": "Crisis keywords handled without escalation path",
        "description": "A healthcare AI surface mentions suicide / self-harm / crisis but never references 988 / 911 / 112 / 999 / a crisis line. Tennessee HB 1951 (2026) creates criminal liability for encouraging suicide; lacking an escalation path materially worsens the exposure.",
        "remediation": "Add explicit crisis-line escalation instructions in the prompt / system message; test for the most common suicide / self-harm phrases and escalate before generating any other reply."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "high",
        "category": "legal-compliance",
        "file_path": "docs/security/threat-model.md",
        "line_number": 52,
        "rule_identifier": "AAK-HEALTHCARE-AI-005",
        "title": "Crisis keywords handled without escalation path",
        "description": "A healthcare AI surface mentions suicide / self-harm / crisis but never references 988 / 911 / 112 / 999 / a crisis line. Tennessee HB 1951 (2026) creates criminal liability for encouraging suicide; lacking an escalation path materially worsens the exposure.",
        "remediation": "Add explicit crisis-line escalation instructions in the prompt / system message; test for the most common suicide / self-harm phrases and escalate before generating any other reply."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "legal-compliance",
        "file_path": "docs/data-retention-policy.md",
        "line_number": null,
        "rule_identifier": "AAK-STATE-PRIVACY-001",
        "title": "Privacy doc missing 'do-not-sell' / opt-out-of-sale language",
        "description": "A privacy policy / notice lacks the CCPA-lineage opt-out-of-sale language that Alabama DPPA, CCPA, CPRA, VCDPA, and the other 21 state comprehensive privacy laws converge on.",
        "remediation": "Add a 'Do Not Sell / Share My Personal Information' section and a usable opt-out mechanism."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "legal-compliance",
        "file_path": "docs/data-retention-policy.md",
        "line_number": null,
        "rule_identifier": "AAK-STATE-PRIVACY-002",
        "title": "Privacy doc missing access / deletion / portability rights",
        "description": "A privacy policy does not describe the consumer's access, deletion, or portability rights \u2014 mandatory across every state comprehensive privacy law passed 2018-2026.",
        "remediation": "Describe DSAR submission, 45-day cure window where applicable, and the portability format."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "legal-compliance",
        "file_path": "docs/legal/privacy-policy.md",
        "line_number": null,
        "rule_identifier": "AAK-STATE-PRIVACY-001",
        "title": "Privacy doc missing 'do-not-sell' / opt-out-of-sale language",
        "description": "A privacy policy / notice lacks the CCPA-lineage opt-out-of-sale language that Alabama DPPA, CCPA, CPRA, VCDPA, and the other 21 state comprehensive privacy laws converge on.",
        "remediation": "Add a 'Do Not Sell / Share My Personal Information' section and a usable opt-out mechanism."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "legal-compliance",
        "file_path": "docs/legal/privacy-policy.md",
        "line_number": null,
        "rule_identifier": "AAK-STATE-PRIVACY-002",
        "title": "Privacy doc missing access / deletion / portability rights",
        "description": "A privacy policy does not describe the consumer's access, deletion, or portability rights \u2014 mandatory across every state comprehensive privacy law passed 2018-2026.",
        "remediation": "Describe DSAR submission, 45-day cure window where applicable, and the portability format."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "legal-compliance",
        "file_path": "docs/legal/PRIVACY_PHONE_HOME.md",
        "line_number": null,
        "rule_identifier": "AAK-STATE-PRIVACY-001",
        "title": "Privacy doc missing 'do-not-sell' / opt-out-of-sale language",
        "description": "A privacy policy / notice lacks the CCPA-lineage opt-out-of-sale language that Alabama DPPA, CCPA, CPRA, VCDPA, and the other 21 state comprehensive privacy laws converge on.",
        "remediation": "Add a 'Do Not Sell / Share My Personal Information' section and a usable opt-out mechanism."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "legal-compliance",
        "file_path": "docs/legal/PRIVACY_PHONE_HOME.md",
        "line_number": null,
        "rule_identifier": "AAK-STATE-PRIVACY-002",
        "title": "Privacy doc missing access / deletion / portability rights",
        "description": "A privacy policy does not describe the consumer's access, deletion, or portability rights \u2014 mandatory across every state comprehensive privacy law passed 2018-2026.",
        "remediation": "Describe DSAR submission, 45-day cure window where applicable, and the portability format."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "low",
        "category": "legal-compliance",
        "file_path": "docs/legal/PRIVACY_PHONE_HOME.md",
        "line_number": null,
        "rule_identifier": "AAK-STATE-PRIVACY-003",
        "title": "Privacy doc missing data-controller contact",
        "description": "A privacy policy does not expose a data-controller contact (DPO email / privacy@ / mailing address). Required by most state laws and a prerequisite for any DSAR.",
        "remediation": "Add a privacy@ inbox and a postal mailing address for DSARs."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "supply-chain",
        "file_path": ".github/workflows/cicd.yml",
        "line_number": 160,
        "rule_identifier": "AAK-GHA-IMMUTABLE-001",
        "title": "Third-party GitHub Action not pinned by full commit SHA",
        "description": "A workflow in `.github/workflows/` uses a third-party Action (`owner/action@ref`) where `ref` is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision \u2014 the downstream repo consuming it will happily run the new code with `GITHUB_TOKEN` and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy.",
        "remediation": "Repin third-party Actions to a 40-character commit SHA and add a `# v1.2.3`-style trailing comment for humans. First-party Actions under `actions/` and `github/` are exempt (they now ship Immutable Actions). Dependabot will auto-bump SHA pins when `update-type: all` is set."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "supply-chain",
        "file_path": ".github/workflows/cicd.yml",
        "line_number": 190,
        "rule_identifier": "AAK-GHA-IMMUTABLE-001",
        "title": "Third-party GitHub Action not pinned by full commit SHA",
        "description": "A workflow in `.github/workflows/` uses a third-party Action (`owner/action@ref`) where `ref` is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision \u2014 the downstream repo consuming it will happily run the new code with `GITHUB_TOKEN` and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy.",
        "remediation": "Repin third-party Actions to a 40-character commit SHA and add a `# v1.2.3`-style trailing comment for humans. First-party Actions under `actions/` and `github/` are exempt (they now ship Immutable Actions). Dependabot will auto-bump SHA pins when `update-type: all` is set."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "supply-chain",
        "file_path": ".github/workflows/cicd.yml",
        "line_number": 191,
        "rule_identifier": "AAK-GHA-IMMUTABLE-001",
        "title": "Third-party GitHub Action not pinned by full commit SHA",
        "description": "A workflow in `.github/workflows/` uses a third-party Action (`owner/action@ref`) where `ref` is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision \u2014 the downstream repo consuming it will happily run the new code with `GITHUB_TOKEN` and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy.",
        "remediation": "Repin third-party Actions to a 40-character commit SHA and add a `# v1.2.3`-style trailing comment for humans. First-party Actions under `actions/` and `github/` are exempt (they now ship Immutable Actions). Dependabot will auto-bump SHA pins when `update-type: all` is set."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "supply-chain",
        "file_path": ".github/workflows/cicd.yml",
        "line_number": 193,
        "rule_identifier": "AAK-GHA-IMMUTABLE-001",
        "title": "Third-party GitHub Action not pinned by full commit SHA",
        "description": "A workflow in `.github/workflows/` uses a third-party Action (`owner/action@ref`) where `ref` is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision \u2014 the downstream repo consuming it will happily run the new code with `GITHUB_TOKEN` and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy.",
        "remediation": "Repin third-party Actions to a 40-character commit SHA and add a `# v1.2.3`-style trailing comment for humans. First-party Actions under `actions/` and `github/` are exempt (they now ship Immutable Actions). Dependabot will auto-bump SHA pins when `update-type: all` is set."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "supply-chain",
        "file_path": ".github/workflows/cicd.yml",
        "line_number": 200,
        "rule_identifier": "AAK-GHA-IMMUTABLE-001",
        "title": "Third-party GitHub Action not pinned by full commit SHA",
        "description": "A workflow in `.github/workflows/` uses a third-party Action (`owner/action@ref`) where `ref` is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision \u2014 the downstream repo consuming it will happily run the new code with `GITHUB_TOKEN` and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy.",
        "remediation": "Repin third-party Actions to a 40-character commit SHA and add a `# v1.2.3`-style trailing comment for humans. First-party Actions under `actions/` and `github/` are exempt (they now ship Immutable Actions). Dependabot will auto-bump SHA pins when `update-type: all` is set."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "supply-chain",
        "file_path": ".github/workflows/cicd.yml",
        "line_number": 209,
        "rule_identifier": "AAK-GHA-IMMUTABLE-001",
        "title": "Third-party GitHub Action not pinned by full commit SHA",
        "description": "A workflow in `.github/workflows/` uses a third-party Action (`owner/action@ref`) where `ref` is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision \u2014 the downstream repo consuming it will happily run the new code with `GITHUB_TOKEN` and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy.",
        "remediation": "Repin third-party Actions to a 40-character commit SHA and add a `# v1.2.3`-style trailing comment for humans. First-party Actions under `actions/` and `github/` are exempt (they now ship Immutable Actions). Dependabot will auto-bump SHA pins when `update-type: all` is set."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "supply-chain",
        "file_path": ".github/workflows/cicd.yml",
        "line_number": 220,
        "rule_identifier": "AAK-GHA-IMMUTABLE-001",
        "title": "Third-party GitHub Action not pinned by full commit SHA",
        "description": "A workflow in `.github/workflows/` uses a third-party Action (`owner/action@ref`) where `ref` is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision \u2014 the downstream repo consuming it will happily run the new code with `GITHUB_TOKEN` and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy.",
        "remediation": "Repin third-party Actions to a 40-character commit SHA and add a `# v1.2.3`-style trailing comment for humans. First-party Actions under `actions/` and `github/` are exempt (they now ship Immutable Actions). Dependabot will auto-bump SHA pins when `update-type: all` is set."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "supply-chain",
        "file_path": ".github/workflows/cicd.yml",
        "line_number": 243,
        "rule_identifier": "AAK-GHA-IMMUTABLE-001",
        "title": "Third-party GitHub Action not pinned by full commit SHA",
        "description": "A workflow in `.github/workflows/` uses a third-party Action (`owner/action@ref`) where `ref` is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision \u2014 the downstream repo consuming it will happily run the new code with `GITHUB_TOKEN` and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy.",
        "remediation": "Repin third-party Actions to a 40-character commit SHA and add a `# v1.2.3`-style trailing comment for humans. First-party Actions under `actions/` and `github/` are exempt (they now ship Immutable Actions). Dependabot will auto-bump SHA pins when `update-type: all` is set."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "supply-chain",
        "file_path": ".github/workflows/cicd.yml",
        "line_number": 361,
        "rule_identifier": "AAK-GHA-IMMUTABLE-001",
        "title": "Third-party GitHub Action not pinned by full commit SHA",
        "description": "A workflow in `.github/workflows/` uses a third-party Action (`owner/action@ref`) where `ref` is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision \u2014 the downstream repo consuming it will happily run the new code with `GITHUB_TOKEN` and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy.",
        "remediation": "Repin third-party Actions to a 40-character commit SHA and add a `# v1.2.3`-style trailing comment for humans. First-party Actions under `actions/` and `github/` are exempt (they now ship Immutable Actions). Dependabot will auto-bump SHA pins when `update-type: all` is set."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "supply-chain",
        "file_path": ".github/workflows/security-nightly.yml",
        "line_number": 59,
        "rule_identifier": "AAK-GHA-IMMUTABLE-001",
        "title": "Third-party GitHub Action not pinned by full commit SHA",
        "description": "A workflow in `.github/workflows/` uses a third-party Action (`owner/action@ref`) where `ref` is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision \u2014 the downstream repo consuming it will happily run the new code with `GITHUB_TOKEN` and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy.",
        "remediation": "Repin third-party Actions to a 40-character commit SHA and add a `# v1.2.3`-style trailing comment for humans. First-party Actions under `actions/` and `github/` are exempt (they now ship Immutable Actions). Dependabot will auto-bump SHA pins when `update-type: all` is set."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "supply-chain",
        "file_path": ".github/workflows/helm-matrix.yml",
        "line_number": 37,
        "rule_identifier": "AAK-GHA-IMMUTABLE-001",
        "title": "Third-party GitHub Action not pinned by full commit SHA",
        "description": "A workflow in `.github/workflows/` uses a third-party Action (`owner/action@ref`) where `ref` is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision \u2014 the downstream repo consuming it will happily run the new code with `GITHUB_TOKEN` and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy.",
        "remediation": "Repin third-party Actions to a 40-character commit SHA and add a `# v1.2.3`-style trailing comment for humans. First-party Actions under `actions/` and `github/` are exempt (they now ship Immutable Actions). Dependabot will auto-bump SHA pins when `update-type: all` is set."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "supply-chain",
        "file_path": ".github/workflows/helm-matrix.yml",
        "line_number": 41,
        "rule_identifier": "AAK-GHA-IMMUTABLE-001",
        "title": "Third-party GitHub Action not pinned by full commit SHA",
        "description": "A workflow in `.github/workflows/` uses a third-party Action (`owner/action@ref`) where `ref` is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision \u2014 the downstream repo consuming it will happily run the new code with `GITHUB_TOKEN` and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy.",
        "remediation": "Repin third-party Actions to a 40-character commit SHA and add a `# v1.2.3`-style trailing comment for humans. First-party Actions under `actions/` and `github/` are exempt (they now ship Immutable Actions). Dependabot will auto-bump SHA pins when `update-type: all` is set."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "supply-chain",
        "file_path": ".github/workflows/lighthouse-nightly.yml",
        "line_number": 54,
        "rule_identifier": "AAK-GHA-IMMUTABLE-001",
        "title": "Third-party GitHub Action not pinned by full commit SHA",
        "description": "A workflow in `.github/workflows/` uses a third-party Action (`owner/action@ref`) where `ref` is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision \u2014 the downstream repo consuming it will happily run the new code with `GITHUB_TOKEN` and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy.",
        "remediation": "Repin third-party Actions to a 40-character commit SHA and add a `# v1.2.3`-style trailing comment for humans. First-party Actions under `actions/` and `github/` are exempt (they now ship Immutable Actions). Dependabot will auto-bump SHA pins when `update-type: all` is set."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "supply-chain",
        "file_path": ".github/workflows/release.yml",
        "line_number": 98,
        "rule_identifier": "AAK-GHA-IMMUTABLE-001",
        "title": "Third-party GitHub Action not pinned by full commit SHA",
        "description": "A workflow in `.github/workflows/` uses a third-party Action (`owner/action@ref`) where `ref` is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision \u2014 the downstream repo consuming it will happily run the new code with `GITHUB_TOKEN` and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy.",
        "remediation": "Repin third-party Actions to a 40-character commit SHA and add a `# v1.2.3`-style trailing comment for humans. First-party Actions under `actions/` and `github/` are exempt (they now ship Immutable Actions). Dependabot will auto-bump SHA pins when `update-type: all` is set."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "supply-chain",
        "file_path": ".github/workflows/release.yml",
        "line_number": 133,
        "rule_identifier": "AAK-GHA-IMMUTABLE-001",
        "title": "Third-party GitHub Action not pinned by full commit SHA",
        "description": "A workflow in `.github/workflows/` uses a third-party Action (`owner/action@ref`) where `ref` is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision \u2014 the downstream repo consuming it will happily run the new code with `GITHUB_TOKEN` and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy.",
        "remediation": "Repin third-party Actions to a 40-character commit SHA and add a `# v1.2.3`-style trailing comment for humans. First-party Actions under `actions/` and `github/` are exempt (they now ship Immutable Actions). Dependabot will auto-bump SHA pins when `update-type: all` is set."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "supply-chain",
        "file_path": ".github/workflows/release.yml",
        "line_number": 136,
        "rule_identifier": "AAK-GHA-IMMUTABLE-001",
        "title": "Third-party GitHub Action not pinned by full commit SHA",
        "description": "A workflow in `.github/workflows/` uses a third-party Action (`owner/action@ref`) where `ref` is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision \u2014 the downstream repo consuming it will happily run the new code with `GITHUB_TOKEN` and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy.",
        "remediation": "Repin third-party Actions to a 40-character commit SHA and add a `# v1.2.3`-style trailing comment for humans. First-party Actions under `actions/` and `github/` are exempt (they now ship Immutable Actions). Dependabot will auto-bump SHA pins when `update-type: all` is set."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "supply-chain",
        "file_path": ".github/workflows/release.yml",
        "line_number": 139,
        "rule_identifier": "AAK-GHA-IMMUTABLE-001",
        "title": "Third-party GitHub Action not pinned by full commit SHA",
        "description": "A workflow in `.github/workflows/` uses a third-party Action (`owner/action@ref`) where `ref` is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision \u2014 the downstream repo consuming it will happily run the new code with `GITHUB_TOKEN` and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy.",
        "remediation": "Repin third-party Actions to a 40-character commit SHA and add a `# v1.2.3`-style trailing comment for humans. First-party Actions under `actions/` and `github/` are exempt (they now ship Immutable Actions). Dependabot will auto-bump SHA pins when `update-type: all` is set."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "supply-chain",
        "file_path": ".github/workflows/release.yml",
        "line_number": 161,
        "rule_identifier": "AAK-GHA-IMMUTABLE-001",
        "title": "Third-party GitHub Action not pinned by full commit SHA",
        "description": "A workflow in `.github/workflows/` uses a third-party Action (`owner/action@ref`) where `ref` is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision \u2014 the downstream repo consuming it will happily run the new code with `GITHUB_TOKEN` and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy.",
        "remediation": "Repin third-party Actions to a 40-character commit SHA and add a `# v1.2.3`-style trailing comment for humans. First-party Actions under `actions/` and `github/` are exempt (they now ship Immutable Actions). Dependabot will auto-bump SHA pins when `update-type: all` is set."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "supply-chain",
        "file_path": ".github/workflows/release.yml",
        "line_number": 206,
        "rule_identifier": "AAK-GHA-IMMUTABLE-001",
        "title": "Third-party GitHub Action not pinned by full commit SHA",
        "description": "A workflow in `.github/workflows/` uses a third-party Action (`owner/action@ref`) where `ref` is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision \u2014 the downstream repo consuming it will happily run the new code with `GITHUB_TOKEN` and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy.",
        "remediation": "Repin third-party Actions to a 40-character commit SHA and add a `# v1.2.3`-style trailing comment for humans. First-party Actions under `actions/` and `github/` are exempt (they now ship Immutable Actions). Dependabot will auto-bump SHA pins when `update-type: all` is set."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "supply-chain",
        "file_path": ".github/workflows/perf-budget.yml",
        "line_number": 41,
        "rule_identifier": "AAK-GHA-IMMUTABLE-001",
        "title": "Third-party GitHub Action not pinned by full commit SHA",
        "description": "A workflow in `.github/workflows/` uses a third-party Action (`owner/action@ref`) where `ref` is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision \u2014 the downstream repo consuming it will happily run the new code with `GITHUB_TOKEN` and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy.",
        "remediation": "Repin third-party Actions to a 40-character commit SHA and add a `# v1.2.3`-style trailing comment for humans. First-party Actions under `actions/` and `github/` are exempt (they now ship Immutable Actions). Dependabot will auto-bump SHA pins when `update-type: all` is set."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "medium",
        "category": "supply-chain",
        "file_path": ".github/workflows/perf-budget.yml",
        "line_number": 71,
        "rule_identifier": "AAK-GHA-IMMUTABLE-001",
        "title": "Third-party GitHub Action not pinned by full commit SHA",
        "description": "A workflow in `.github/workflows/` uses a third-party Action (`owner/action@ref`) where `ref` is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision \u2014 the downstream repo consuming it will happily run the new code with `GITHUB_TOKEN` and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy.",
        "remediation": "Repin third-party Actions to a 40-character commit SHA and add a `# v1.2.3`-style trailing comment for humans. First-party Actions under `actions/` and `github/` are exempt (they now ship Immutable Actions). Dependabot will auto-bump SHA pins when `update-type: all` is set."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "high",
        "category": "taint-analysis",
        "file_path": "core/backend/tests/test_fuzz.py",
        "line_number": 105,
        "rule_identifier": "AAK-IPI-WILD-CORPUS-001",
        "title": "Indirect-prompt-injection wild payload checked into repo",
        "description": "A source / config file (`.md`, `.txt`, `.yml`, `.yaml`, `.json`, `.py`) embeds a known wild IPI payload from the 2026-04-24 Help Net Security + Infosec Magazine catalogue. Common shapes: ignore-prior + exfil, system-role override, reveal-system-prompt, credential exfil via cURL, tool-call rerouting, delete-repository, admin role escalation, obfuscated prompt break, image-attached IPI, RAG-poisoned document. Refresh the corpus with `aak corpus update --ipi`.",
        "remediation": "Remove the payload from the file. If the file is intentionally an attack-corpus fixture, exclude it via `--ignore-paths`. The real risk is checked-in poisoned templates / system-prompt files / RAG seed corpora \u2014 those need to be sanitized at ingestion time, not at scan time."
      },
      {
        "tool_name": "agent-audit-kit",
        "severity": "high",
        "category": "taint-analysis",
        "file_path": "core/backend/tests/test_text2sql.py",
        "line_number": 37,
        "rule_identifier": "AAK-IPI-WILD-CORPUS-001",
        "title": "Indirect-prompt-injection wild payload checked into repo",
        "description": "A source / config file (`.md`, `.txt`, `.yml`, `.yaml`, `.json`, `.py`) embeds a known wild IPI payload from the 2026-04-24 Help Net Security + Infosec Magazine catalogue. Common shapes: ignore-prior + exfil, system-role override, reveal-system-prompt, credential exfil via cURL, tool-call rerouting, delete-repository, admin role escalation, obfuscated prompt break, image-attached IPI, RAG-poisoned document. Refresh the corpus with `aak corpus update --ipi`.",
        "remediation": "Remove the payload from the file. If the file is intentionally an attack-corpus fixture, exclude it via `--ignore-paths`. The real risk is checked-in poisoned templates / system-prompt files / RAG seed corpora \u2014 those need to be sanitized at ingestion time, not at scan time."
      }
    ],
    "execution_duration_seconds": 34.28718813700834,
    "status": "complete",
    "examined": {
      "unit": "files",
      "count": 1587
    },
    "metadata": {
      "source": "pypi",
      "source_url": "https://pypi.org/project/agent-audit-kit/0.3.26/",
      "report_type": "agent-audit-kit-sast",
      "install_command": "pip install --require-hashes -r docker/scanner-base/agent-audit-kit/requirements.txt",
      "rules_evaluated": 211,
      "severity_counts": {
        "low": 1,
        "high": 31,
        "medium": 50,
        "critical": 18,
        "informational": 0
      }
    },
    "display_score": 0.0,
    "display_badge": "Unsafe"
  },
  {
    "scanner_name": "bearer",
    "scanner_version": "2.0.2",
    "score": 0.0,
    "scanner_badge": "Unsafe",
    "findings": [
      {
        "tool_name": "bearer",
        "severity": "critical",
        "category": null,
        "file_path": "/repo/core/backend/app/static/setup/assets/setup.js",
        "line_number": 23,
        "rule_identifier": null,
        "title": "Usage of hard-coded secret",
        "description": "## Description\n\nStoring secrets directly in your code is a security risk. Instead, opt for environment variables or a secret management system to safeguard your secrets.\n\n## Remediations\n\n- **Do not** store plaintext secrets in your code. This exposes sensitive information to unnecessary risk.\n  ```javascript\n    passport.use(new OAuth2Strategy({\n        authorizationURL: 'https://www.example.com/oauth2/authorize',\n        tokenURL: 'https://www.example.com/oauth2/token',\n        clientID: 'my-i",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "critical",
        "category": null,
        "file_path": "/repo/core/backend/app/static/setup/assets/setup.js",
        "line_number": 59,
        "rule_identifier": null,
        "title": "Usage of hard-coded secret",
        "description": "## Description\n\nStoring secrets directly in your code is a security risk. Instead, opt for environment variables or a secret management system to safeguard your secrets.\n\n## Remediations\n\n- **Do not** store plaintext secrets in your code. This exposes sensitive information to unnecessary risk.\n  ```javascript\n    passport.use(new OAuth2Strategy({\n        authorizationURL: 'https://www.example.com/oauth2/authorize',\n        tokenURL: 'https://www.example.com/oauth2/token',\n        clientID: 'my-i",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "critical",
        "category": null,
        "file_path": "/repo/core/backend/app/static/setup/assets/setup.js",
        "line_number": 75,
        "rule_identifier": null,
        "title": "Usage of hard-coded secret",
        "description": "## Description\n\nStoring secrets directly in your code is a security risk. Instead, opt for environment variables or a secret management system to safeguard your secrets.\n\n## Remediations\n\n- **Do not** store plaintext secrets in your code. This exposes sensitive information to unnecessary risk.\n  ```javascript\n    passport.use(new OAuth2Strategy({\n        authorizationURL: 'https://www.example.com/oauth2/authorize',\n        tokenURL: 'https://www.example.com/oauth2/token',\n        clientID: 'my-i",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "critical",
        "category": null,
        "file_path": "/repo/core/backend/app/static/setup/assets/setup.js",
        "line_number": 111,
        "rule_identifier": null,
        "title": "Usage of hard-coded secret",
        "description": "## Description\n\nStoring secrets directly in your code is a security risk. Instead, opt for environment variables or a secret management system to safeguard your secrets.\n\n## Remediations\n\n- **Do not** store plaintext secrets in your code. This exposes sensitive information to unnecessary risk.\n  ```javascript\n    passport.use(new OAuth2Strategy({\n        authorizationURL: 'https://www.example.com/oauth2/authorize',\n        tokenURL: 'https://www.example.com/oauth2/token',\n        clientID: 'my-i",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "critical",
        "category": null,
        "file_path": "/repo/core/backend/app/static/setup/assets/setup.js",
        "line_number": 127,
        "rule_identifier": null,
        "title": "Usage of hard-coded secret",
        "description": "## Description\n\nStoring secrets directly in your code is a security risk. Instead, opt for environment variables or a secret management system to safeguard your secrets.\n\n## Remediations\n\n- **Do not** store plaintext secrets in your code. This exposes sensitive information to unnecessary risk.\n  ```javascript\n    passport.use(new OAuth2Strategy({\n        authorizationURL: 'https://www.example.com/oauth2/authorize',\n        tokenURL: 'https://www.example.com/oauth2/token',\n        clientID: 'my-i",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "critical",
        "category": null,
        "file_path": "/repo/core/backend/app/static/setup/assets/setup.js",
        "line_number": 386,
        "rule_identifier": null,
        "title": "Usage of hard-coded secret",
        "description": "## Description\n\nStoring secrets directly in your code is a security risk. Instead, opt for environment variables or a secret management system to safeguard your secrets.\n\n## Remediations\n\n- **Do not** store plaintext secrets in your code. This exposes sensitive information to unnecessary risk.\n  ```javascript\n    passport.use(new OAuth2Strategy({\n        authorizationURL: 'https://www.example.com/oauth2/authorize',\n        tokenURL: 'https://www.example.com/oauth2/token',\n        clientID: 'my-i",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "critical",
        "category": null,
        "file_path": "/repo/core/backend/app/static/setup/assets/setup.js",
        "line_number": 387,
        "rule_identifier": null,
        "title": "Usage of hard-coded secret",
        "description": "## Description\n\nStoring secrets directly in your code is a security risk. Instead, opt for environment variables or a secret management system to safeguard your secrets.\n\n## Remediations\n\n- **Do not** store plaintext secrets in your code. This exposes sensitive information to unnecessary risk.\n  ```javascript\n    passport.use(new OAuth2Strategy({\n        authorizationURL: 'https://www.example.com/oauth2/authorize',\n        tokenURL: 'https://www.example.com/oauth2/token',\n        clientID: 'my-i",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "critical",
        "category": null,
        "file_path": "/repo/core/backend/app/static/setup/assets/setup.js",
        "line_number": 388,
        "rule_identifier": null,
        "title": "Usage of hard-coded secret",
        "description": "## Description\n\nStoring secrets directly in your code is a security risk. Instead, opt for environment variables or a secret management system to safeguard your secrets.\n\n## Remediations\n\n- **Do not** store plaintext secrets in your code. This exposes sensitive information to unnecessary risk.\n  ```javascript\n    passport.use(new OAuth2Strategy({\n        authorizationURL: 'https://www.example.com/oauth2/authorize',\n        tokenURL: 'https://www.example.com/oauth2/token',\n        clientID: 'my-i",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "critical",
        "category": null,
        "file_path": "/repo/core/backend/app/static/setup/assets/setup.js",
        "line_number": 389,
        "rule_identifier": null,
        "title": "Usage of hard-coded secret",
        "description": "## Description\n\nStoring secrets directly in your code is a security risk. Instead, opt for environment variables or a secret management system to safeguard your secrets.\n\n## Remediations\n\n- **Do not** store plaintext secrets in your code. This exposes sensitive information to unnecessary risk.\n  ```javascript\n    passport.use(new OAuth2Strategy({\n        authorizationURL: 'https://www.example.com/oauth2/authorize',\n        tokenURL: 'https://www.example.com/oauth2/token',\n        clientID: 'my-i",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "critical",
        "category": null,
        "file_path": "/repo/core/backend/app/static/setup/assets/setup.js",
        "line_number": 390,
        "rule_identifier": null,
        "title": "Usage of hard-coded secret",
        "description": "## Description\n\nStoring secrets directly in your code is a security risk. Instead, opt for environment variables or a secret management system to safeguard your secrets.\n\n## Remediations\n\n- **Do not** store plaintext secrets in your code. This exposes sensitive information to unnecessary risk.\n  ```javascript\n    passport.use(new OAuth2Strategy({\n        authorizationURL: 'https://www.example.com/oauth2/authorize',\n        tokenURL: 'https://www.example.com/oauth2/token',\n        clientID: 'my-i",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "critical",
        "category": null,
        "file_path": "/repo/core/backend/app/api/admin/providers_save.py",
        "line_number": 145,
        "rule_identifier": null,
        "title": "Unsanitized external input in code generation",
        "description": "## Description\n\nAllowing external input (dynamic or user-controlled) to directly influence code generation or scripting functions without proper sanitization can lead to code injection vulnerabilities. This occurs when an attacker is able to insert malicious code into your application, which is then executed, potentially leading to unauthorized actions or data access.\n\n## Remediations\n\n- **Do not** pass unsanitized external input to functions or methods that dynamically execute code.\n- **Do** al",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "critical",
        "category": null,
        "file_path": "/repo/core/backend/app/api/admin/providers_save.py",
        "line_number": 293,
        "rule_identifier": null,
        "title": "Unsanitized external input in code generation",
        "description": "## Description\n\nAllowing external input (dynamic or user-controlled) to directly influence code generation or scripting functions without proper sanitization can lead to code injection vulnerabilities. This occurs when an attacker is able to insert malicious code into your application, which is then executed, potentially leading to unauthorized actions or data access.\n\n## Remediations\n\n- **Do not** pass unsanitized external input to functions or methods that dynamically execute code.\n- **Do** al",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "critical",
        "category": null,
        "file_path": "/repo/core/backend/app/api/setup.py",
        "line_number": 740,
        "rule_identifier": null,
        "title": "Unsanitized external input in code generation",
        "description": "## Description\n\nAllowing external input (dynamic or user-controlled) to directly influence code generation or scripting functions without proper sanitization can lead to code injection vulnerabilities. This occurs when an attacker is able to insert malicious code into your application, which is then executed, potentially leading to unauthorized actions or data access.\n\n## Remediations\n\n- **Do not** pass unsanitized external input to functions or methods that dynamically execute code.\n- **Do** al",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "critical",
        "category": null,
        "file_path": "/repo/core/backend/app/providers/contract_validator.py",
        "line_number": 20,
        "rule_identifier": null,
        "title": "Unsanitized external input in code generation",
        "description": "## Description\n\nAllowing external input (dynamic or user-controlled) to directly influence code generation or scripting functions without proper sanitization can lead to code injection vulnerabilities. This occurs when an attacker is able to insert malicious code into your application, which is then executed, potentially leading to unauthorized actions or data access.\n\n## Remediations\n\n- **Do not** pass unsanitized external input to functions or methods that dynamically execute code.\n- **Do** al",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "critical",
        "category": null,
        "file_path": "/repo/core/backend/app/actions/delivery.py",
        "line_number": 98,
        "rule_identifier": null,
        "title": "Usage of insecure SMTP connection",
        "description": "## Description\n\nAn insecure SMTP connection can expose transmitted data to unauthorized access. This rule identifies if SMTP settings are configured to enforce secure connections.\n\n## Remediations\n\n- **Do** use the `SMTP_SSL` class to establish secure SMTP connections. This prevents unauthorized access to the data being transmitted.\n  ```python\n  smtp = smtplib.SMTP_SSL(\"smtp.example.com\")\n  ```\n\n## References\n\n- [OWASP insecure transport](https://owasp.org/www-community/vulnerabilities/Insecure",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "critical",
        "category": null,
        "file_path": "/repo/core/backend/app/email/sender.py",
        "line_number": 102,
        "rule_identifier": null,
        "title": "Usage of insecure SMTP connection",
        "description": "## Description\n\nAn insecure SMTP connection can expose transmitted data to unauthorized access. This rule identifies if SMTP settings are configured to enforce secure connections.\n\n## Remediations\n\n- **Do** use the `SMTP_SSL` class to establish secure SMTP connections. This prevents unauthorized access to the data being transmitted.\n  ```python\n  smtp = smtplib.SMTP_SSL(\"smtp.example.com\")\n  ```\n\n## References\n\n- [OWASP insecure transport](https://owasp.org/www-community/vulnerabilities/Insecure",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "critical",
        "category": null,
        "file_path": "/repo/core/backend/app/email/sender.py",
        "line_number": 131,
        "rule_identifier": null,
        "title": "Usage of insecure SMTP connection",
        "description": "## Description\n\nAn insecure SMTP connection can expose transmitted data to unauthorized access. This rule identifies if SMTP settings are configured to enforce secure connections.\n\n## Remediations\n\n- **Do** use the `SMTP_SSL` class to establish secure SMTP connections. This prevents unauthorized access to the data being transmitted.\n  ```python\n  smtp = smtplib.SMTP_SSL(\"smtp.example.com\")\n  ```\n\n## References\n\n- [OWASP insecure transport](https://owasp.org/www-community/vulnerabilities/Insecure",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "critical",
        "category": null,
        "file_path": "/repo/core/backend/app/api/beta_admin.py",
        "line_number": 155,
        "rule_identifier": null,
        "title": "Missing signature verification of JWT",
        "description": "## Description\n\nFailing to verify the signature of JSON Web Tokens (JWTs) compromises the security of an application. Signature verification is crucial for confirming the authenticity and integrity of JWTs. Without this verification, your application is open to token forgery and replay attacks, where attackers can manipulate or reuse tokens to gain unauthorized access.\n\n## Remediations\n\n- **Do not** disable verification of the token's signature, because this leaves a significant security gap.\n  ",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "critical",
        "category": null,
        "file_path": "/repo/core/backend/app/api/beta_portal.py",
        "line_number": 91,
        "rule_identifier": null,
        "title": "Missing signature verification of JWT",
        "description": "## Description\n\nFailing to verify the signature of JSON Web Tokens (JWTs) compromises the security of an application. Signature verification is crucial for confirming the authenticity and integrity of JWTs. Without this verification, your application is open to token forgery and replay attacks, where attackers can manipulate or reuse tokens to gain unauthorized access.\n\n## Remediations\n\n- **Do not** disable verification of the token's signature, because this leaves a significant security gap.\n  ",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "critical",
        "category": null,
        "file_path": "/repo/core/backend/app/api/license.py",
        "line_number": 176,
        "rule_identifier": null,
        "title": "Missing signature verification of JWT",
        "description": "## Description\n\nFailing to verify the signature of JSON Web Tokens (JWTs) compromises the security of an application. Signature verification is crucial for confirming the authenticity and integrity of JWTs. Without this verification, your application is open to token forgery and replay attacks, where attackers can manipulate or reuse tokens to gain unauthorized access.\n\n## Remediations\n\n- **Do not** disable verification of the token's signature, because this leaves a significant security gap.\n  ",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "critical",
        "category": null,
        "file_path": "/repo/core/backend/app/licensing/phone_home.py",
        "line_number": 57,
        "rule_identifier": null,
        "title": "Missing signature verification of JWT",
        "description": "## Description\n\nFailing to verify the signature of JSON Web Tokens (JWTs) compromises the security of an application. Signature verification is crucial for confirming the authenticity and integrity of JWTs. Without this verification, your application is open to token forgery and replay attacks, where attackers can manipulate or reuse tokens to gain unauthorized access.\n\n## Remediations\n\n- **Do not** disable verification of the token's signature, because this leaves a significant security gap.\n  ",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "critical",
        "category": null,
        "file_path": "/repo/core/backend/app/licensing/renewal.py",
        "line_number": 83,
        "rule_identifier": null,
        "title": "Missing signature verification of JWT",
        "description": "## Description\n\nFailing to verify the signature of JSON Web Tokens (JWTs) compromises the security of an application. Signature verification is crucial for confirming the authenticity and integrity of JWTs. Without this verification, your application is open to token forgery and replay attacks, where attackers can manipulate or reuse tokens to gain unauthorized access.\n\n## Remediations\n\n- **Do not** disable verification of the token's signature, because this leaves a significant security gap.\n  ",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "critical",
        "category": null,
        "file_path": "/repo/benchmarks/vault_overhead.py",
        "line_number": 51,
        "rule_identifier": null,
        "title": "Unsanitized user input in OS command",
        "description": "## Description\n\nDirectly incorporating external or user-defined input into an OS command exposes the system to possible command injection attacks. This vulnerability allows attackers to execute unauthorized commands on the operating system, potentially leading to a compromise of system integrity.\n\n## Remediations\n\n- **Do not** use OS commands that include dynamic input directly. Instead, explore safer alternatives such as libraries or built-in functions that achieve the same goal without executi",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "critical",
        "category": null,
        "file_path": "/repo/core/backend/app/marketplace/cosign_verify.py",
        "line_number": 67,
        "rule_identifier": null,
        "title": "Unsanitized user input in OS command",
        "description": "## Description\n\nDirectly incorporating external or user-defined input into an OS command exposes the system to possible command injection attacks. This vulnerability allows attackers to execute unauthorized commands on the operating system, potentially leading to a compromise of system integrity.\n\n## Remediations\n\n- **Do not** use OS commands that include dynamic input directly. Instead, explore safer alternatives such as libraries or built-in functions that achieve the same goal without executi",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "critical",
        "category": null,
        "file_path": "/repo/core/backend/app/marketplace/sandbox.py",
        "line_number": 383,
        "rule_identifier": null,
        "title": "Unsanitized user input in OS command",
        "description": "## Description\n\nDirectly incorporating external or user-defined input into an OS command exposes the system to possible command injection attacks. This vulnerability allows attackers to execute unauthorized commands on the operating system, potentially leading to a compromise of system integrity.\n\n## Remediations\n\n- **Do not** use OS commands that include dynamic input directly. Instead, explore safer alternatives such as libraries or built-in functions that achieve the same goal without executi",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "critical",
        "category": null,
        "file_path": "/repo/core/backend/app/patches/engine.py",
        "line_number": 91,
        "rule_identifier": null,
        "title": "Unsanitized user input in OS command",
        "description": "## Description\n\nDirectly incorporating external or user-defined input into an OS command exposes the system to possible command injection attacks. This vulnerability allows attackers to execute unauthorized commands on the operating system, potentially leading to a compromise of system integrity.\n\n## Remediations\n\n- **Do not** use OS commands that include dynamic input directly. Instead, explore safer alternatives such as libraries or built-in functions that achieve the same goal without executi",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "critical",
        "category": null,
        "file_path": "/repo/core/backend/app/patches/engine.py",
        "line_number": 138,
        "rule_identifier": null,
        "title": "Unsanitized user input in OS command",
        "description": "## Description\n\nDirectly incorporating external or user-defined input into an OS command exposes the system to possible command injection attacks. This vulnerability allows attackers to execute unauthorized commands on the operating system, potentially leading to a compromise of system integrity.\n\n## Remediations\n\n- **Do not** use OS commands that include dynamic input directly. Instead, explore safer alternatives such as libraries or built-in functions that achieve the same goal without executi",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "critical",
        "category": null,
        "file_path": "/repo/core/backend/app/quality/verifiers/code.py",
        "line_number": 130,
        "rule_identifier": null,
        "title": "Unsanitized user input in OS command",
        "description": "## Description\n\nDirectly incorporating external or user-defined input into an OS command exposes the system to possible command injection attacks. This vulnerability allows attackers to execute unauthorized commands on the operating system, potentially leading to a compromise of system integrity.\n\n## Remediations\n\n- **Do not** use OS commands that include dynamic input directly. Instead, explore safer alternatives such as libraries or built-in functions that achieve the same goal without executi",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "critical",
        "category": null,
        "file_path": "/repo/core/backend/app/db/session.py",
        "line_number": 146,
        "rule_identifier": null,
        "title": "Unsanitized external input in SQL query",
        "description": "## Description\n\nUsing unsanitized data, such as user input or request data, or externally influenced data passed to a function, in SQL query exposes your application to SQL injection attacks. This vulnerability arises when externally controlled data is directly included in SQL statements without proper sanitation, allowing attackers to manipulate queries and access or modify data.\n\n## Remediations\n\n- **Do not** include raw external input in SQL queries. This practice can lead to SQL injection vu",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "high",
        "category": null,
        "file_path": "/repo/core/backend/app/api/license.py",
        "line_number": 43,
        "rule_identifier": null,
        "title": "Unsanitized dynamic input in file path",
        "description": "## Description\n\nUsing unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.\n\n## Remediations\n\n- **Do not** directly use external input to construct file paths. This can lead to unauthorized file access.\n- **Do** use a safelist to define accessible paths or directories. Only al",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "high",
        "category": null,
        "file_path": "/repo/core/backend/app/api/setup.py",
        "line_number": 217,
        "rule_identifier": null,
        "title": "Unsanitized dynamic input in file path",
        "description": "## Description\n\nUsing unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.\n\n## Remediations\n\n- **Do not** directly use external input to construct file paths. This can lead to unauthorized file access.\n- **Do** use a safelist to define accessible paths or directories. Only al",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "high",
        "category": null,
        "file_path": "/repo/core/backend/app/db/session.py",
        "line_number": 36,
        "rule_identifier": null,
        "title": "Unsanitized dynamic input in file path",
        "description": "## Description\n\nUsing unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.\n\n## Remediations\n\n- **Do not** directly use external input to construct file paths. This can lead to unauthorized file access.\n- **Do** use a safelist to define accessible paths or directories. Only al",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "high",
        "category": null,
        "file_path": "/repo/core/backend/app/hooks/common.py",
        "line_number": 165,
        "rule_identifier": null,
        "title": "Unsanitized dynamic input in file path",
        "description": "## Description\n\nUsing unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.\n\n## Remediations\n\n- **Do not** directly use external input to construct file paths. This can lead to unauthorized file access.\n- **Do** use a safelist to define accessible paths or directories. Only al",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "high",
        "category": null,
        "file_path": "/repo/core/backend/app/hooks/common.py",
        "line_number": 166,
        "rule_identifier": null,
        "title": "Unsanitized dynamic input in file path",
        "description": "## Description\n\nUsing unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.\n\n## Remediations\n\n- **Do not** directly use external input to construct file paths. This can lead to unauthorized file access.\n- **Do** use a safelist to define accessible paths or directories. Only al",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "high",
        "category": null,
        "file_path": "/repo/core/backend/app/licensing/keys.py",
        "line_number": 42,
        "rule_identifier": null,
        "title": "Unsanitized dynamic input in file path",
        "description": "## Description\n\nUsing unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.\n\n## Remediations\n\n- **Do not** directly use external input to construct file paths. This can lead to unauthorized file access.\n- **Do** use a safelist to define accessible paths or directories. Only al",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "high",
        "category": null,
        "file_path": "/repo/core/backend/app/licensing/keys.py",
        "line_number": 50,
        "rule_identifier": null,
        "title": "Unsanitized dynamic input in file path",
        "description": "## Description\n\nUsing unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.\n\n## Remediations\n\n- **Do not** directly use external input to construct file paths. This can lead to unauthorized file access.\n- **Do** use a safelist to define accessible paths or directories. Only al",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "high",
        "category": null,
        "file_path": "/repo/core/backend/app/licensing/keys.py",
        "line_number": 69,
        "rule_identifier": null,
        "title": "Unsanitized dynamic input in file path",
        "description": "## Description\n\nUsing unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.\n\n## Remediations\n\n- **Do not** directly use external input to construct file paths. This can lead to unauthorized file access.\n- **Do** use a safelist to define accessible paths or directories. Only al",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "high",
        "category": null,
        "file_path": "/repo/core/backend/app/licensing/keys.py",
        "line_number": 70,
        "rule_identifier": null,
        "title": "Unsanitized dynamic input in file path",
        "description": "## Description\n\nUsing unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.\n\n## Remediations\n\n- **Do not** directly use external input to construct file paths. This can lead to unauthorized file access.\n- **Do** use a safelist to define accessible paths or directories. Only al",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "high",
        "category": null,
        "file_path": "/repo/core/backend/app/licensing/keys.py",
        "line_number": 72,
        "rule_identifier": null,
        "title": "Unsanitized dynamic input in file path",
        "description": "## Description\n\nUsing unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.\n\n## Remediations\n\n- **Do not** directly use external input to construct file paths. This can lead to unauthorized file access.\n- **Do** use a safelist to define accessible paths or directories. Only al",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "high",
        "category": null,
        "file_path": "/repo/core/backend/app/licensing/keys.py",
        "line_number": 73,
        "rule_identifier": null,
        "title": "Unsanitized dynamic input in file path",
        "description": "## Description\n\nUsing unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.\n\n## Remediations\n\n- **Do not** directly use external input to construct file paths. This can lead to unauthorized file access.\n- **Do** use a safelist to define accessible paths or directories. Only al",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "high",
        "category": null,
        "file_path": "/repo/core/backend/app/meeting/capture_service.py",
        "line_number": 201,
        "rule_identifier": null,
        "title": "Unsanitized dynamic input in file path",
        "description": "## Description\n\nUsing unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.\n\n## Remediations\n\n- **Do not** directly use external input to construct file paths. This can lead to unauthorized file access.\n- **Do** use a safelist to define accessible paths or directories. Only al",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "high",
        "category": null,
        "file_path": "/repo/core/backend/app/meeting/transcribe.py",
        "line_number": 63,
        "rule_identifier": null,
        "title": "Unsanitized dynamic input in file path",
        "description": "## Description\n\nUsing unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.\n\n## Remediations\n\n- **Do not** directly use external input to construct file paths. This can lead to unauthorized file access.\n- **Do** use a safelist to define accessible paths or directories. Only al",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "high",
        "category": null,
        "file_path": "/repo/core/backend/app/meeting/transcribe.py",
        "line_number": 177,
        "rule_identifier": null,
        "title": "Unsanitized dynamic input in file path",
        "description": "## Description\n\nUsing unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.\n\n## Remediations\n\n- **Do not** directly use external input to construct file paths. This can lead to unauthorized file access.\n- **Do** use a safelist to define accessible paths or directories. Only al",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "high",
        "category": null,
        "file_path": "/repo/core/backend/app/meeting/transcribe.py",
        "line_number": 243,
        "rule_identifier": null,
        "title": "Unsanitized dynamic input in file path",
        "description": "## Description\n\nUsing unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.\n\n## Remediations\n\n- **Do not** directly use external input to construct file paths. This can lead to unauthorized file access.\n- **Do** use a safelist to define accessible paths or directories. Only al",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "high",
        "category": null,
        "file_path": "/repo/core/backend/app/meeting/upload_manual.py",
        "line_number": 72,
        "rule_identifier": null,
        "title": "Unsanitized dynamic input in file path",
        "description": "## Description\n\nUsing unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.\n\n## Remediations\n\n- **Do not** directly use external input to construct file paths. This can lead to unauthorized file access.\n- **Do** use a safelist to define accessible paths or directories. Only al",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "high",
        "category": null,
        "file_path": "/repo/core/backend/app/observability/ragas_eval.py",
        "line_number": 263,
        "rule_identifier": null,
        "title": "Unsanitized dynamic input in file path",
        "description": "## Description\n\nUsing unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.\n\n## Remediations\n\n- **Do not** directly use external input to construct file paths. This can lead to unauthorized file access.\n- **Do** use a safelist to define accessible paths or directories. Only al",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "high",
        "category": null,
        "file_path": "/repo/core/backend/app/observability/ragas_eval.py",
        "line_number": 272,
        "rule_identifier": null,
        "title": "Unsanitized dynamic input in file path",
        "description": "## Description\n\nUsing unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.\n\n## Remediations\n\n- **Do not** directly use external input to construct file paths. This can lead to unauthorized file access.\n- **Do** use a safelist to define accessible paths or directories. Only al",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "high",
        "category": null,
        "file_path": "/repo/core/backend/app/observability/ragas_eval.py",
        "line_number": 281,
        "rule_identifier": null,
        "title": "Unsanitized dynamic input in file path",
        "description": "## Description\n\nUsing unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.\n\n## Remediations\n\n- **Do not** directly use external input to construct file paths. This can lead to unauthorized file access.\n- **Do** use a safelist to define accessible paths or directories. Only al",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "high",
        "category": null,
        "file_path": "/repo/core/backend/app/patches/engine.py",
        "line_number": 128,
        "rule_identifier": null,
        "title": "Unsanitized dynamic input in file path",
        "description": "## Description\n\nUsing unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.\n\n## Remediations\n\n- **Do not** directly use external input to construct file paths. This can lead to unauthorized file access.\n- **Do** use a safelist to define accessible paths or directories. Only al",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "high",
        "category": null,
        "file_path": "/repo/core/backend/app/patches/engine.py",
        "line_number": 147,
        "rule_identifier": null,
        "title": "Unsanitized dynamic input in file path",
        "description": "## Description\n\nUsing unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.\n\n## Remediations\n\n- **Do not** directly use external input to construct file paths. This can lead to unauthorized file access.\n- **Do** use a safelist to define accessible paths or directories. Only al",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "high",
        "category": null,
        "file_path": "/repo/core/backend/app/patches/engine.py",
        "line_number": 163,
        "rule_identifier": null,
        "title": "Unsanitized dynamic input in file path",
        "description": "## Description\n\nUsing unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.\n\n## Remediations\n\n- **Do not** directly use external input to construct file paths. This can lead to unauthorized file access.\n- **Do** use a safelist to define accessible paths or directories. Only al",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "high",
        "category": null,
        "file_path": "/repo/scripts/audit_test_data.py",
        "line_number": 83,
        "rule_identifier": null,
        "title": "Unsanitized dynamic input in file path",
        "description": "## Description\n\nUsing unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.\n\n## Remediations\n\n- **Do not** directly use external input to construct file paths. This can lead to unauthorized file access.\n- **Do** use a safelist to define accessible paths or directories. Only al",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "high",
        "category": null,
        "file_path": "/repo/scripts/audit_test_data.py",
        "line_number": 84,
        "rule_identifier": null,
        "title": "Unsanitized dynamic input in file path",
        "description": "## Description\n\nUsing unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.\n\n## Remediations\n\n- **Do not** directly use external input to construct file paths. This can lead to unauthorized file access.\n- **Do** use a safelist to define accessible paths or directories. Only al",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "high",
        "category": null,
        "file_path": "/repo/scripts/eval/cost_calculator.py",
        "line_number": 254,
        "rule_identifier": null,
        "title": "Unsanitized dynamic input in file path",
        "description": "## Description\n\nUsing unsanitized dynamic input to determine file paths can allow attackers to gain access to files and folders outside of the intended scope. This vulnerability occurs when input provided by users is directly used to access the filesystem without proper validation or sanitization.\n\n## Remediations\n\n- **Do not** directly use external input to construct file paths. This can lead to unauthorized file access.\n- **Do** use a safelist to define accessible paths or directories. Only al",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "high",
        "category": null,
        "file_path": "/repo/core/backend/app/api/stream.py",
        "line_number": 58,
        "rule_identifier": null,
        "title": "Usage of weak Pseudo-Random Number Generator (PRNG)",
        "description": "## Description\n\nThe `random` module in Python generates pseudorandom numbers that are not secure for cryptographic purposes. These numbers can be predicted if the seed is known, posing a risk to the security of applications that use them for generating secrets, tokens, or other security-sensitive elements.\n\n## Remediations\n\n- **Do** use `secrets` instead of `random` for generating random numbers in contexts where security is crucial. This ensures the randomness is cryptographically secure and un",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "high",
        "category": null,
        "file_path": "/repo/core/backend/app/api/stream.py",
        "line_number": 59,
        "rule_identifier": null,
        "title": "Usage of weak Pseudo-Random Number Generator (PRNG)",
        "description": "## Description\n\nThe `random` module in Python generates pseudorandom numbers that are not secure for cryptographic purposes. These numbers can be predicted if the seed is known, posing a risk to the security of applications that use them for generating secrets, tokens, or other security-sensitive elements.\n\n## Remediations\n\n- **Do** use `secrets` instead of `random` for generating random numbers in contexts where security is crucial. This ensures the randomness is cryptographically secure and un",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "high",
        "category": null,
        "file_path": "/repo/core/backend/app/api/stream.py",
        "line_number": 60,
        "rule_identifier": null,
        "title": "Usage of weak Pseudo-Random Number Generator (PRNG)",
        "description": "## Description\n\nThe `random` module in Python generates pseudorandom numbers that are not secure for cryptographic purposes. These numbers can be predicted if the seed is known, posing a risk to the security of applications that use them for generating secrets, tokens, or other security-sensitive elements.\n\n## Remediations\n\n- **Do** use `secrets` instead of `random` for generating random numbers in contexts where security is crucial. This ensures the randomness is cryptographically secure and un",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "high",
        "category": null,
        "file_path": "/repo/core/backend/app/api/stream.py",
        "line_number": 61,
        "rule_identifier": null,
        "title": "Usage of weak Pseudo-Random Number Generator (PRNG)",
        "description": "## Description\n\nThe `random` module in Python generates pseudorandom numbers that are not secure for cryptographic purposes. These numbers can be predicted if the seed is known, posing a risk to the security of applications that use them for generating secrets, tokens, or other security-sensitive elements.\n\n## Remediations\n\n- **Do** use `secrets` instead of `random` for generating random numbers in contexts where security is crucial. This ensures the randomness is cryptographically secure and un",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "high",
        "category": null,
        "file_path": "/repo/core/backend/app/api/stream.py",
        "line_number": 62,
        "rule_identifier": null,
        "title": "Usage of weak Pseudo-Random Number Generator (PRNG)",
        "description": "## Description\n\nThe `random` module in Python generates pseudorandom numbers that are not secure for cryptographic purposes. These numbers can be predicted if the seed is known, posing a risk to the security of applications that use them for generating secrets, tokens, or other security-sensitive elements.\n\n## Remediations\n\n- **Do** use `secrets` instead of `random` for generating random numbers in contexts where security is crucial. This ensures the randomness is cryptographically secure and un",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "high",
        "category": null,
        "file_path": "/repo/core/backend/app/api/stream.py",
        "line_number": 63,
        "rule_identifier": null,
        "title": "Usage of weak Pseudo-Random Number Generator (PRNG)",
        "description": "## Description\n\nThe `random` module in Python generates pseudorandom numbers that are not secure for cryptographic purposes. These numbers can be predicted if the seed is known, posing a risk to the security of applications that use them for generating secrets, tokens, or other security-sensitive elements.\n\n## Remediations\n\n- **Do** use `secrets` instead of `random` for generating random numbers in contexts where security is crucial. This ensures the randomness is cryptographically secure and un",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "high",
        "category": null,
        "file_path": "/repo/core/backend/app/api/stream.py",
        "line_number": 64,
        "rule_identifier": null,
        "title": "Usage of weak Pseudo-Random Number Generator (PRNG)",
        "description": "## Description\n\nThe `random` module in Python generates pseudorandom numbers that are not secure for cryptographic purposes. These numbers can be predicted if the seed is known, posing a risk to the security of applications that use them for generating secrets, tokens, or other security-sensitive elements.\n\n## Remediations\n\n- **Do** use `secrets` instead of `random` for generating random numbers in contexts where security is crucial. This ensures the randomness is cryptographically secure and un",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "high",
        "category": null,
        "file_path": "/repo/core/backend/app/api/stream.py",
        "line_number": 65,
        "rule_identifier": null,
        "title": "Usage of weak Pseudo-Random Number Generator (PRNG)",
        "description": "## Description\n\nThe `random` module in Python generates pseudorandom numbers that are not secure for cryptographic purposes. These numbers can be predicted if the seed is known, posing a risk to the security of applications that use them for generating secrets, tokens, or other security-sensitive elements.\n\n## Remediations\n\n- **Do** use `secrets` instead of `random` for generating random numbers in contexts where security is crucial. This ensures the randomness is cryptographically secure and un",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "high",
        "category": null,
        "file_path": "/repo/core/backend/app/api/stream.py",
        "line_number": 148,
        "rule_identifier": null,
        "title": "Usage of weak Pseudo-Random Number Generator (PRNG)",
        "description": "## Description\n\nThe `random` module in Python generates pseudorandom numbers that are not secure for cryptographic purposes. These numbers can be predicted if the seed is known, posing a risk to the security of applications that use them for generating secrets, tokens, or other security-sensitive elements.\n\n## Remediations\n\n- **Do** use `secrets` instead of `random` for generating random numbers in contexts where security is crucial. This ensures the randomness is cryptographically secure and un",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "high",
        "category": null,
        "file_path": "/repo/core/backend/app/observability/usage_logger.py",
        "line_number": 89,
        "rule_identifier": null,
        "title": "Usage of weak Pseudo-Random Number Generator (PRNG)",
        "description": "## Description\n\nThe `random` module in Python generates pseudorandom numbers that are not secure for cryptographic purposes. These numbers can be predicted if the seed is known, posing a risk to the security of applications that use them for generating secrets, tokens, or other security-sensitive elements.\n\n## Remediations\n\n- **Do** use `secrets` instead of `random` for generating random numbers in contexts where security is crucial. This ensures the randomness is cryptographically secure and un",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "high",
        "category": null,
        "file_path": "/repo/core/backend/app/providers/anthropic_mock.py",
        "line_number": 73,
        "rule_identifier": null,
        "title": "Usage of weak Pseudo-Random Number Generator (PRNG)",
        "description": "## Description\n\nThe `random` module in Python generates pseudorandom numbers that are not secure for cryptographic purposes. These numbers can be predicted if the seed is known, posing a risk to the security of applications that use them for generating secrets, tokens, or other security-sensitive elements.\n\n## Remediations\n\n- **Do** use `secrets` instead of `random` for generating random numbers in contexts where security is crucial. This ensures the randomness is cryptographically secure and un",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "medium",
        "category": null,
        "file_path": "/repo/infra/cf-worker/license-activation.js",
        "line_number": 51,
        "rule_identifier": null,
        "title": "Observable Timing Discrepancy",
        "description": "## Description\n\nObservable Timing Discrepancy occurs when the time it takes for certain operations to complete can be measured and observed by attackers. This vulnerability is particularly concerning when operations involve sensitive information, such as password checks or secret comparisons. If attackers can analyze how long these operations take, they might be able to deduce confidential details, putting your data at risk.\n\n## Remediations\n\n- **Do** implement algorithms that process sensitive ",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "medium",
        "category": null,
        "file_path": "/repo/infra/cf-worker/license-activation.js",
        "line_number": 97,
        "rule_identifier": null,
        "title": "Observable Timing Discrepancy",
        "description": "## Description\n\nObservable Timing Discrepancy occurs when the time it takes for certain operations to complete can be measured and observed by attackers. This vulnerability is particularly concerning when operations involve sensitive information, such as password checks or secret comparisons. If attackers can analyze how long these operations take, they might be able to deduce confidential details, putting your data at risk.\n\n## Remediations\n\n- **Do** implement algorithms that process sensitive ",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "medium",
        "category": null,
        "file_path": "/repo/core/backend/app/i18n/__init__.py",
        "line_number": 83,
        "rule_identifier": null,
        "title": "Missing HTTP Only option in cookie configuration",
        "description": "## Description\n\nNot setting the HTTP Only attribute to \"true\" in cookie configurations leaves the cookie vulnerable to being accessed by client-side JavaScript. This oversight can lead to the exposure of cookie values, especially on websites susceptible to Cross-Site Scripting (XSS) attacks. Enabling HTTP Only is a critical step in preventing malicious scripts from reading the cookie values through JavaScript.\n\n## Remediations\n\n- **Do** set the HTTP Only attribute to `true` for cookies to preven",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "medium",
        "category": null,
        "file_path": "/repo/core/backend/app/i18n/__init__.py",
        "line_number": 83,
        "rule_identifier": null,
        "title": "Missing Secure option in cookie configuration",
        "description": "## Description\n\nNot setting the \"Secure\" attribute in cookie configuration can lead to unauthorized third-party access. This attribute, when enabled, ensures cookies are sent to the server only over HTTPS, enhancing security by preventing potential eavesdropping.\n\n## Remediations\n\n- **Do** set the `secure` attribute to `true` to enforce the transmission of cookies over HTTPS only.\n  ```python\n  response.set_cookie(secure=True)\n  ```",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "medium",
        "category": null,
        "file_path": "/repo/core/backend/app/api/auth.py",
        "line_number": 520,
        "rule_identifier": null,
        "title": "Leakage of sensitive information in logger message",
        "description": "## Description\n\nSensitive information leakage through logger messages can compromise data security. This vulnerability arises when sensitive data is inadvertently included in log messages, posing a risk of unauthorized disclosure.\n\n## Remediations\n\n- **Do not** include sensitive data in logger messages. This can lead to unintentional exposure of private information.\n  ```python\n  logger.info(f\"User is: '{user.email}'\") # unsafe\n  ```\n- **Do** use non-sensitive, unique identifiers to log user inf",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "medium",
        "category": null,
        "file_path": "/repo/core/backend/app/api/auth.py",
        "line_number": 769,
        "rule_identifier": null,
        "title": "Leakage of sensitive information in logger message",
        "description": "## Description\n\nSensitive information leakage through logger messages can compromise data security. This vulnerability arises when sensitive data is inadvertently included in log messages, posing a risk of unauthorized disclosure.\n\n## Remediations\n\n- **Do not** include sensitive data in logger messages. This can lead to unintentional exposure of private information.\n  ```python\n  logger.info(f\"User is: '{user.email}'\") # unsafe\n  ```\n- **Do** use non-sensitive, unique identifiers to log user inf",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "medium",
        "category": null,
        "file_path": "/repo/core/backend/app/api/beta_portal.py",
        "line_number": 154,
        "rule_identifier": null,
        "title": "Leakage of sensitive information in logger message",
        "description": "## Description\n\nSensitive information leakage through logger messages can compromise data security. This vulnerability arises when sensitive data is inadvertently included in log messages, posing a risk of unauthorized disclosure.\n\n## Remediations\n\n- **Do not** include sensitive data in logger messages. This can lead to unintentional exposure of private information.\n  ```python\n  logger.info(f\"User is: '{user.email}'\") # unsafe\n  ```\n- **Do** use non-sensitive, unique identifiers to log user inf",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "medium",
        "category": null,
        "file_path": "/repo/core/backend/app/api/beta_portal.py",
        "line_number": 160,
        "rule_identifier": null,
        "title": "Leakage of sensitive information in logger message",
        "description": "## Description\n\nSensitive information leakage through logger messages can compromise data security. This vulnerability arises when sensitive data is inadvertently included in log messages, posing a risk of unauthorized disclosure.\n\n## Remediations\n\n- **Do not** include sensitive data in logger messages. This can lead to unintentional exposure of private information.\n  ```python\n  logger.info(f\"User is: '{user.email}'\") # unsafe\n  ```\n- **Do** use non-sensitive, unique identifiers to log user inf",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "medium",
        "category": null,
        "file_path": "/repo/core/backend/app/api/claude_code_hooks.py",
        "line_number": 198,
        "rule_identifier": null,
        "title": "Leakage of sensitive information in logger message",
        "description": "## Description\n\nSensitive information leakage through logger messages can compromise data security. This vulnerability arises when sensitive data is inadvertently included in log messages, posing a risk of unauthorized disclosure.\n\n## Remediations\n\n- **Do not** include sensitive data in logger messages. This can lead to unintentional exposure of private information.\n  ```python\n  logger.info(f\"User is: '{user.email}'\") # unsafe\n  ```\n- **Do** use non-sensitive, unique identifiers to log user inf",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "medium",
        "category": null,
        "file_path": "/repo/core/backend/app/worker/inngest_app.py",
        "line_number": 67,
        "rule_identifier": null,
        "title": "Leakage of sensitive information in logger message",
        "description": "## Description\n\nSensitive information leakage through logger messages can compromise data security. This vulnerability arises when sensitive data is inadvertently included in log messages, posing a risk of unauthorized disclosure.\n\n## Remediations\n\n- **Do not** include sensitive data in logger messages. This can lead to unintentional exposure of private information.\n  ```python\n  logger.info(f\"User is: '{user.email}'\") # unsafe\n  ```\n- **Do** use non-sensitive, unique identifiers to log user inf",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "medium",
        "category": null,
        "file_path": "/repo/core/backend/app/rag/pipeline_v10.py",
        "line_number": 126,
        "rule_identifier": null,
        "title": "Usage of weak hashing library (SHA-1)",
        "description": "## Description\n\nUsing a weak hashing library like SHA-1 increases the risk of data breaches. SHA-1 in particular is vulnerable to collision attacks, where two different inputs can produce the same hash value, compromising data integrity and security.\n\n## Remediations\n\n- **Do not** use SHA-1 for hashing. It is no longer considered secure due to its vulnerability to collision attacks.\n  ```python\n  hashlib.sha1('password').digest() # unsafe\n  ```\n- **Do** opt for stronger hashing algorithms such a",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "medium",
        "category": null,
        "file_path": "/repo/core/backend/app/rag/reranker.py",
        "line_number": 202,
        "rule_identifier": null,
        "title": "Usage of weak hashing library (SHA-1)",
        "description": "## Description\n\nUsing a weak hashing library like SHA-1 increases the risk of data breaches. SHA-1 in particular is vulnerable to collision attacks, where two different inputs can produce the same hash value, compromising data integrity and security.\n\n## Remediations\n\n- **Do not** use SHA-1 for hashing. It is no longer considered secure due to its vulnerability to collision attacks.\n  ```python\n  hashlib.sha1('password').digest() # unsafe\n  ```\n- **Do** opt for stronger hashing algorithms such a",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "medium",
        "category": null,
        "file_path": "/repo/core/backend/app/watcher/sources.py",
        "line_number": 40,
        "rule_identifier": null,
        "title": "Usage of weak hashing library (SHA-1)",
        "description": "## Description\n\nUsing a weak hashing library like SHA-1 increases the risk of data breaches. SHA-1 in particular is vulnerable to collision attacks, where two different inputs can produce the same hash value, compromising data integrity and security.\n\n## Remediations\n\n- **Do not** use SHA-1 for hashing. It is no longer considered secure due to its vulnerability to collision attacks.\n  ```python\n  hashlib.sha1('password').digest() # unsafe\n  ```\n- **Do** opt for stronger hashing algorithms such a",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "low",
        "category": null,
        "file_path": "/repo/benchmarks/k6/abs_load.js",
        "line_number": 72,
        "rule_identifier": null,
        "title": "Usage of insufficient random value",
        "description": "## Description\n\nUsing predictable random values compromises your application's security, particularly if these values serve security-related functions.\n\n## Remediations\n\n- **Do** use a robust library for generating random values to enhance security.\n  ```javascript\n  const crypto = require('crypto');\n  crypto.randomBytes(16).toString('hex');\n  ```",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "low",
        "category": null,
        "file_path": "/repo/benchmarks/k6/abs_load.js",
        "line_number": 103,
        "rule_identifier": null,
        "title": "Usage of insufficient random value",
        "description": "## Description\n\nUsing predictable random values compromises your application's security, particularly if these values serve security-related functions.\n\n## Remediations\n\n- **Do** use a robust library for generating random values to enhance security.\n  ```javascript\n  const crypto = require('crypto');\n  crypto.randomBytes(16).toString('hex');\n  ```",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "low",
        "category": null,
        "file_path": "/repo/core/landing/components/HeroScene3D.tsx",
        "line_number": 151,
        "rule_identifier": null,
        "title": "Usage of insufficient random value",
        "description": "## Description\n\nUsing predictable random values compromises your application's security, particularly if these values serve security-related functions.\n\n## Remediations\n\n- **Do** use a robust library for generating random values to enhance security.\n  ```javascript\n  const crypto = require('crypto');\n  crypto.randomBytes(16).toString('hex');\n  ```",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "low",
        "category": null,
        "file_path": "/repo/core/landing/components/HeroScene3D.tsx",
        "line_number": 152,
        "rule_identifier": null,
        "title": "Usage of insufficient random value",
        "description": "## Description\n\nUsing predictable random values compromises your application's security, particularly if these values serve security-related functions.\n\n## Remediations\n\n- **Do** use a robust library for generating random values to enhance security.\n  ```javascript\n  const crypto = require('crypto');\n  crypto.randomBytes(16).toString('hex');\n  ```",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "low",
        "category": null,
        "file_path": "/repo/core/landing/components/HeroScene3D.tsx",
        "line_number": 170,
        "rule_identifier": null,
        "title": "Usage of insufficient random value",
        "description": "## Description\n\nUsing predictable random values compromises your application's security, particularly if these values serve security-related functions.\n\n## Remediations\n\n- **Do** use a robust library for generating random values to enhance security.\n  ```javascript\n  const crypto = require('crypto');\n  crypto.randomBytes(16).toString('hex');\n  ```",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "low",
        "category": null,
        "file_path": "/repo/core/landing/app/api/billing-portal/route.ts",
        "line_number": 86,
        "rule_identifier": null,
        "title": "Leakage of information in logger message",
        "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "low",
        "category": null,
        "file_path": "/repo/core/landing/app/api/checkout/route.ts",
        "line_number": 100,
        "rule_identifier": null,
        "title": "Leakage of information in logger message",
        "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "low",
        "category": null,
        "file_path": "/repo/core/landing/components/MarketplacePanel.tsx",
        "line_number": 134,
        "rule_identifier": null,
        "title": "Leakage of information in logger message",
        "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "low",
        "category": null,
        "file_path": "/repo/core/landing/components/MarketplacePanel.tsx",
        "line_number": 142,
        "rule_identifier": null,
        "title": "Leakage of information in logger message",
        "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "low",
        "category": null,
        "file_path": "/repo/core/landing/components/MarketplacePanel.tsx",
        "line_number": 161,
        "rule_identifier": null,
        "title": "Leakage of information in logger message",
        "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "low",
        "category": null,
        "file_path": "/repo/core/landing/components/MarketplacePanel.tsx",
        "line_number": 167,
        "rule_identifier": null,
        "title": "Leakage of information in logger message",
        "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "low",
        "category": null,
        "file_path": "/repo/scripts/ci_bundle_split_gate.js",
        "line_number": 12,
        "rule_identifier": null,
        "title": "Leakage of information in logger message",
        "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "low",
        "category": null,
        "file_path": "/repo/scripts/ci_bundle_split_gate.js",
        "line_number": 18,
        "rule_identifier": null,
        "title": "Leakage of information in logger message",
        "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "low",
        "category": null,
        "file_path": "/repo/scripts/validate_bundle_split.js",
        "line_number": 129,
        "rule_identifier": null,
        "title": "Leakage of information in logger message",
        "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "low",
        "category": null,
        "file_path": "/repo/scripts/validate_bundle_split.js",
        "line_number": 132,
        "rule_identifier": null,
        "title": "Leakage of information in logger message",
        "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "low",
        "category": null,
        "file_path": "/repo/scripts/validate_bundle_split.js",
        "line_number": 133,
        "rule_identifier": null,
        "title": "Leakage of information in logger message",
        "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "low",
        "category": null,
        "file_path": "/repo/scripts/validate_bundle_split.js",
        "line_number": 134,
        "rule_identifier": null,
        "title": "Leakage of information in logger message",
        "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
        "remediation": null
      },
      {
        "tool_name": "bearer",
        "severity": "low",
        "category": null,
        "file_path": "/repo/scripts/validate_bundle_split.js",
        "line_number": 137,
        "rule_identifier": null,
        "title": "Leakage of information in logger message",
        "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
        "remediation": null
      }
    ],
    "execution_duration_seconds": 250.49050050100777,
    "status": "complete",
    "examined": {
      "unit": "files",
      "count": 1346
    },
    "metadata": {
      "source": "github-releases",
      "source_url": "https://github.com/Bearer/bearer",
      "report_type": "security",
      "rules_loaded": 554,
      "install_command": "curl -sfL https://raw.githubusercontent.com/Bearer/bearer/main/contrib/install.sh | sh -s -- -b /usr/local/bin \"v2.0.2\"",
      "severity_counts": {
        "low": 18,
        "high": 36,
        "medium": 13,
        "critical": 29,
        "informational": 0
      }
    },
    "display_score": 0.0,
    "display_badge": "Unsafe"
  },
  {
    "scanner_name": "nerlo-behavioral",
    "scanner_version": "0.1.0",
    "score": 0.0,
    "scanner_badge": "Unsafe",
    "findings": [
      {
        "tool_name": "nerlo-behavioral",
        "severity": "high",
        "category": "data-exfiltration",
        "file_path": "/repo/core/backend/app/erp/vanna_app.py",
        "line_number": 147,
        "rule_identifier": "opt.nerlo-rules.nerlo-py-secret-to-network-egress",
        "title": "opt.nerlo-rules.nerlo-py-secret-to-network-egress",
        "description": "A secret / environment variable / token value flows into a network request (requests / httpx / urllib / socket). This is the postmark-mcp supply-chain exfiltration shape: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host.",
        "remediation": null
      },
      {
        "tool_name": "nerlo-behavioral",
        "severity": "high",
        "category": "data-exfiltration",
        "file_path": "/repo/core/landing/app/admin/audit/page.tsx",
        "line_number": 55,
        "rule_identifier": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
        "title": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
        "description": "A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host.",
        "remediation": null
      },
      {
        "tool_name": "nerlo-behavioral",
        "severity": "high",
        "category": "data-exfiltration",
        "file_path": "/repo/core/landing/app/admin/layout.tsx",
        "line_number": 39,
        "rule_identifier": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
        "title": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
        "description": "A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host.",
        "remediation": null
      },
      {
        "tool_name": "nerlo-behavioral",
        "severity": "high",
        "category": "data-exfiltration",
        "file_path": "/repo/core/landing/app/admin/layout.tsx",
        "line_number": 69,
        "rule_identifier": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
        "title": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
        "description": "A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host.",
        "remediation": null
      },
      {
        "tool_name": "nerlo-behavioral",
        "severity": "high",
        "category": "data-exfiltration",
        "file_path": "/repo/core/landing/app/admin/projects/page.tsx",
        "line_number": 44,
        "rule_identifier": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
        "title": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
        "description": "A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host.",
        "remediation": null
      },
      {
        "tool_name": "nerlo-behavioral",
        "severity": "high",
        "category": "data-exfiltration",
        "file_path": "/repo/core/landing/app/admin/usage/page.tsx",
        "line_number": 47,
        "rule_identifier": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
        "title": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
        "description": "A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host.",
        "remediation": null
      },
      {
        "tool_name": "nerlo-behavioral",
        "severity": "high",
        "category": "data-exfiltration",
        "file_path": "/repo/core/landing/app/admin/users/page.tsx",
        "line_number": 54,
        "rule_identifier": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
        "title": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
        "description": "A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host.",
        "remediation": null
      },
      {
        "tool_name": "nerlo-behavioral",
        "severity": "high",
        "category": "data-exfiltration",
        "file_path": "/repo/core/landing/app/api/marketplace/install/route.ts",
        "line_number": 17,
        "rule_identifier": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
        "title": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
        "description": "A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host.",
        "remediation": null
      },
      {
        "tool_name": "nerlo-behavioral",
        "severity": "high",
        "category": "data-exfiltration",
        "file_path": "/repo/core/landing/app/api/marketplace/plugins/route.ts",
        "line_number": 36,
        "rule_identifier": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
        "title": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
        "description": "A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host.",
        "remediation": null
      },
      {
        "tool_name": "nerlo-behavioral",
        "severity": "high",
        "category": "data-exfiltration",
        "file_path": "/repo/core/landing/app/api/onboarding/event/route.ts",
        "line_number": 25,
        "rule_identifier": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
        "title": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
        "description": "A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host.",
        "remediation": null
      },
      {
        "tool_name": "nerlo-behavioral",
        "severity": "high",
        "category": "data-exfiltration",
        "file_path": "/repo/core/landing/app/api/workflow/execute/route.ts",
        "line_number": 17,
        "rule_identifier": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
        "title": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
        "description": "A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host.",
        "remediation": null
      },
      {
        "tool_name": "nerlo-behavioral",
        "severity": "high",
        "category": "data-exfiltration",
        "file_path": "/repo/core/landing/app/api/workflow/synthesize/route.ts",
        "line_number": 17,
        "rule_identifier": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
        "title": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
        "description": "A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host.",
        "remediation": null
      },
      {
        "tool_name": "nerlo-behavioral",
        "severity": "high",
        "category": "data-exfiltration",
        "file_path": "/repo/core/landing/app/panel/PanelHomeClient.tsx",
        "line_number": 81,
        "rule_identifier": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
        "title": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
        "description": "A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host.",
        "remediation": null
      },
      {
        "tool_name": "nerlo-behavioral",
        "severity": "high",
        "category": "data-exfiltration",
        "file_path": "/repo/core/landing/app/panel/account/page.tsx",
        "line_number": 87,
        "rule_identifier": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
        "title": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
        "description": "A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host.",
        "remediation": null
      },
      {
        "tool_name": "nerlo-behavioral",
        "severity": "high",
        "category": "data-exfiltration",
        "file_path": "/repo/core/landing/app/panel/layout.tsx",
        "line_number": 37,
        "rule_identifier": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
        "title": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
        "description": "A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host.",
        "remediation": null
      },
      {
        "tool_name": "nerlo-behavioral",
        "severity": "high",
        "category": "data-exfiltration",
        "file_path": "/repo/core/landing/app/panel/layout.tsx",
        "line_number": 53,
        "rule_identifier": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
        "title": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
        "description": "A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host.",
        "remediation": null
      },
      {
        "tool_name": "nerlo-behavioral",
        "severity": "high",
        "category": "data-exfiltration",
        "file_path": "/repo/core/landing/app/panel/page.tsx",
        "line_number": 59,
        "rule_identifier": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
        "title": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
        "description": "A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host.",
        "remediation": null
      },
      {
        "tool_name": "nerlo-behavioral",
        "severity": "high",
        "category": "data-exfiltration",
        "file_path": "/repo/core/landing/middleware.ts",
        "line_number": 35,
        "rule_identifier": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
        "title": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
        "description": "A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host.",
        "remediation": null
      },
      {
        "tool_name": "nerlo-behavioral",
        "severity": "high",
        "category": "data-exfiltration",
        "file_path": "/repo/infra/cf-worker/licensing.js",
        "line_number": 141,
        "rule_identifier": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
        "title": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
        "description": "A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host.",
        "remediation": null
      }
    ],
    "execution_duration_seconds": 20.062115797016304,
    "status": "complete",
    "examined": {
      "unit": "files",
      "count": 841
    },
    "metadata": {
      "source": "nerlo-original",
      "source_url": "https://github.com/nerlo-ai/nerlo",
      "report_type": "nerlo-behavioral",
      "ruleset_path": "/opt/nerlo-rules/exfiltration.yaml",
      "ruleset_paths": [
        "/opt/nerlo-rules/exfiltration.yaml",
        "/opt/nerlo-rules/clipboard_exfiltration.yaml",
        "/opt/nerlo-rules/rce_endpoint.yaml",
        "/opt/nerlo-rules/taint_egress.yaml"
      ],
      "install_command": "pip install 'semgrep==1.97.0'",
      "severity_counts": {
        "low": 0,
        "high": 19,
        "medium": 0,
        "critical": 0,
        "informational": 0
      },
      "merged_invocation": true
    },
    "display_score": 0.0,
    "display_badge": "Unsafe"
  },
  {
    "scanner_name": "nerlo-install-instruction",
    "scanner_version": "0.1.0",
    "score": 59.0,
    "scanner_badge": "Unsafe",
    "findings": [
      {
        "tool_name": "nerlo-install-instruction",
        "severity": "high",
        "category": "install-instruction-exec",
        "file_path": "/repo/docs/architecture.md",
        "line_number": 116,
        "rule_identifier": "opt.nerlo-rules.nerlo-install-pipe-to-shell",
        "title": "opt.nerlo-rules.nerlo-install-pipe-to-shell",
        "description": "Documentation instructs piping a downloaded artifact directly into a shell (curl/wget/iwr ... | bash/sh/iex). This is the curl-pipe-bash install shape used by the ClawHub skill droppers and countless malware loaders \u2014 the fetched payload is executed with zero inspection. Confirm this is expected; it is a strong weaponized-documentation signal.",
        "remediation": null
      },
      {
        "tool_name": "nerlo-install-instruction",
        "severity": "informational",
        "category": "install-instruction-run",
        "file_path": "/repo/docs/operations.md",
        "line_number": 145,
        "rule_identifier": "opt.nerlo-rules.nerlo-install-run-bundled-artifact",
        "title": "opt.nerlo-rules.nerlo-install-run-bundled-artifact",
        "description": "Run-directive inventory: documentation names a run/execute/launch verb next to an opaque-extension artifact (\"run resource.txt\", \"double-click setup.exe\") \u2014 the FakeGit README shape. On its own it is CONTEXT, not a verdict: the same shape covers a repo's own tracked scripts and its toolchain, which this pattern cannot tell from a bundled payload. Recorded at INFO so a reviewer sees every run directive in one place.",
        "remediation": null
      },
      {
        "tool_name": "nerlo-install-instruction",
        "severity": "informational",
        "category": "install-instruction-run",
        "file_path": "/repo/infra/install_native_hooks.sh",
        "line_number": 7,
        "rule_identifier": "opt.nerlo-rules.nerlo-install-run-bundled-artifact",
        "title": "opt.nerlo-rules.nerlo-install-run-bundled-artifact",
        "description": "Run-directive inventory: documentation names a run/execute/launch verb next to an opaque-extension artifact (\"run resource.txt\", \"double-click setup.exe\") \u2014 the FakeGit README shape. On its own it is CONTEXT, not a verdict: the same shape covers a repo's own tracked scripts and its toolchain, which this pattern cannot tell from a bundled payload. Recorded at INFO so a reviewer sees every run directive in one place.",
        "remediation": null
      }
    ],
    "execution_duration_seconds": 20.11839026096277,
    "status": "complete",
    "examined": {
      "unit": "files",
      "count": 91
    },
    "metadata": {
      "source": "nerlo-original",
      "source_url": "https://github.com/nerlo-ai/nerlo",
      "report_type": "nerlo-install-instruction",
      "ruleset_path": "/opt/nerlo-rules/install_instructions.yaml",
      "ruleset_paths": [
        "/opt/nerlo-rules/install_instructions.yaml",
        "/opt/nerlo-rules/cursor_rules.yaml"
      ],
      "install_command": "pip install 'semgrep==1.97.0'",
      "severity_counts": {
        "low": 0,
        "high": 1,
        "medium": 0,
        "critical": 0,
        "informational": 2
      },
      "merged_invocation": true
    },
    "display_score": 59.0,
    "display_badge": "Unsafe"
  },
  {
    "scanner_name": "capslock",
    "scanner_version": "v0.3.2",
    "score": 100.0,
    "scanner_badge": "Verified",
    "findings": [],
    "execution_duration_seconds": 0.1169041950488463,
    "status": "not_applicable",
    "examined": {
      "unit": "packages",
      "count": 0
    },
    "metadata": {
      "source": "go-module-proxy",
      "source_url": "https://github.com/google/capslock/releases/tag/v0.3.2",
      "report_type": "go-capability",
      "vendor_mode": false,
      "install_command": "GOTOOLCHAIN=local GOFLAGS=-mod=mod GOSUMDB=sum.golang.org GOBIN=/usr/local/bin go install github.com/google/capslock/cmd/capslock@v0.3.2  # github.com/google/capslock v0.3.2 h1:0ZQa9YR8s9ewFu1g5w6Rgd/lW/4dga7qJew3K6Ql7aM=",
      "environment_note": "capslock found no .go files to analyze; reported not_applicable rather than a clean 100 \u2014 the scanner never ran, so it has no verdict to contribute",
      "go_files_present": 0,
      "artifact_type_policy": "mcp_server",
      "expected_capabilities": [
        "CAPABILITY_FILES",
        "CAPABILITY_NETWORK",
        "CAPABILITY_READ_SYSTEM_STATE",
        "CAPABILITY_REFLECT",
        "CAPABILITY_RUNTIME"
      ],
      "artifact_type_explicit": true
    },
    "display_score": null,
    "display_badge": "not_applicable"
  }
]
```
