Review ID: 9bb9e52df647Generated: 2026-04-15T11:55:26.948Z
CHANGES REQUESTED
215
Total Findings
34
Critical
178
High
2
Medium
36 of 108 Agents Deployed
DiamondPlatinumGoldSilverBronzeHR RoastyFree Baseline
Agent Tier: HR Roasty
tanbiralam/claude-code →
main @ 9f51e71
AIAI Threat Analysis
REAL THREATS
CRITICAL COMMAND INJECTION & SANDBOX BYPASS
Sandbox disabled for bash commands (1, 30): Explicit dangerouslyDisableSandbox flags allow arbitrary command execution without isolation
OS command injection (19, 21, 25, 27): User-controlled input flows directly into shell execution without proper sanitization
SSRF vulnerabilities (15, 16, 52, 173, 174): User-controlled URLs can trigger internal network requests
Arbitrary command execution (17, 20, 22): Headers helper and sed validation bypasses allow command injection
AUTHENTICATION & AUTHORIZATION FAILURES
Authentication bypass (5, 29): Sandbox bypass flags and AWS Bedrock auth bypass via environment variables
Sessions not destroyed on logout (2): Secure storage not cleared, allowing session reuse
OAuth flow vulnerabilities (61-64, 98-99): Unvalidated transport types and authorization URLs
Admin endpoints without auth (50): Remote control session entry point with minimal access controls
SECRETS & CRYPTOGRAPHIC FAILURES
Hardcoded API tokens (7-9, 68): Datadog and GrowthBook tokens exposed in source code
Plaintext credential storage (32-34, 187-191): Credentials stored without encryption despite security warnings
AWS credential exposure (132, 160): Cached without proper rotation validation
DENIAL OF WALLET & RESOURCE EXHAUSTION
Unbounded LLM API calls (0, 4, 12, 24, 28, 31): No token limits or rate limiting on expensive operations
Missing spend caps (13, 26, 38, 82, 156): No per-user/tenant limits on metered services
Retry loops without circuit breakers (10, 18, 35, 101): Infinite retries against paid APIs
PRIVACY & DATA EXPOSURE
PII in telemetry (202-208): Email addresses and account UUIDs logged without consent
Session IDs in logs (41-42, 60, 71): Sensitive identifiers exposed in debug output
File path exposure (90): File paths tracked without consent or encryption
SUPPLY CHAIN & INTEGRITY ISSUES
Missing cryptographic verification (46, 51, 55-57, 94, 100, 112): Plugin/MCP sources loaded without integrity checks
Auto-update without verification (55-57): Update artifacts lack provenance tracking
ATTACK CHAINS
1. Full System Compromise Chain: Unauthenticated user → SSRF (15/16) → Internal service discovery → Command injection (19/21) → Sandbox bypass (1/5) → Full system access
2. Credential Theft Chain: Session ID exposure (41/42) → Session hijacking → Plaintext storage access (32-34) → Credential extraction → AWS/Api token compromise
3. Financial Attack Chain: Unauthenticated endpoint (50) → Unbounded LLM calls (0/4) → No spend caps (13/26) → Unlimited API costs
4. Supply Chain Attack: Missing integrity verification (46/51) → Malicious plugin/MCP server → Code execution via hooks/settings → Data exfiltration
VERDICT
CRITICAL PRIORITIES (Must fix immediately):
1. Command injection & sandbox bypass (1, 5, 19-22, 30) - Direct RCE vectors
2. Authentication bypass (29, 50) - Unprotected admin endpoints
3. Hardcoded secrets (7-9, 68) - Immediate credential exposure
4. Plaintext credential storage (32-34, 187-191) - Local credential theft
HIGH PRIORITIES (Fix in next release):
1. SSRF vulnerabilities (15-16, 52, 173-174) - Internal network access
2. Unbounded API costs (0, 4, 10-13, 24, 26, 28, 31) - Financial risk
3. Missing integrity verification (46, 51, 55-57, 94, 100) - Supply chain risk
MEDIUM PRIORITIES (Schedule fixes):
1. Privacy violations (202-208) - Regulatory compliance risk
2. Session management (2, 40, 96) - Authentication weaknesses
3. Input validation gaps (36-37, 43, 47-49, 65-67) - Defense in depth
The codebase has systemic security issues across authentication, input validation, and secure design. The most dangerous are the direct RCE vectors via command injection and sandbox bypass. Financial risks from unbounded API calls are also severe given the metered nature of LLM services.
215 raw scanner findings — 34 critical · 178 high · 2 medium · 1 info
Raw Scanner Output — 926 pre-cleanup findings
⚠ Pre-Cleanup Report
This is the raw, unprocessed output from all scanner agents before AI analysis. Do not use this to fix issues individually. Multiple agents attack from different angles and frequently report the same underlying vulnerability, resulting in significant duplication. Architectural issues also appear as many separate line-level findings when they require a single structural fix.

Use the Copy Fix Workflow button above to get the AI-cleaned workflow — it deduplicates findings, removes false positives, and provides actionable steps. This raw output is provided for transparency and audit purposes only.
HIGHRetry loop against paid API without exponential backoff ceiling or budget circuit breaker
src/bridge/bridgeApi.ts:105
[AGENTS: Wallet]denial_of_wallet
The withOAuthRetry function retries requests on 401 errors but has no maximum retry count or exponential backoff ceiling. This could cause repeated OAuth token refresh attempts against paid API endpoints, potentially draining budget through failed request charges.
Suggested Fix
Add MAX_RETRY_ATTEMPTS constant with exponential backoff (e.g., 3 retries max with 1s, 2s, 4s delays). Implement budget circuit breaker that stops retrying when user's API budget threshold is approached.
HIGHUnvalidated baseUrl parameter in HTTP request
src/bridge/codeSessionApi.ts:20
[AGENTS: Gateway]edge_security
The createCodeSession function accepts a baseUrl parameter that is directly concatenated into the request URL without validation. An attacker could inject malicious URLs or protocol handlers (e.g., javascript:, data:) through this parameter.
Suggested Fix
Validate baseUrl before use: const url = new URL(baseUrl); if (!['http:', 'https:'].includes(url.protocol)) throw new Error('Invalid protocol');
HIGHUnvalidated baseUrl parameter in fetchRemoteCredentials
src/bridge/codeSessionApi.ts:70
[AGENTS: Gateway]edge_security
The fetchRemoteCredentials function accepts a baseUrl parameter that is directly concatenated into the request URL without validation. Same injection risk as createCodeSession.
Suggested Fix
Validate baseUrl before use: const url = new URL(baseUrl); if (!['http:', 'https:'].includes(url.protocol)) throw new Error('Invalid protocol');
HIGHMissing per-tenant spend caps on bridge operations
src/bridge/envLessBridgeConfig.ts:1
[AGENTS: Wallet]denial_of_wallet
EnvLessBridgeConfig handles bridge sessions with retry logic (init_retry_max_attempts: 3) but no per-tenant or per-user spend caps. Bridge operations may trigger paid API calls (session creation, archive uploads) with no budget enforcement, allowing unlimited cost accumulation.
Suggested Fix
Add per-tenant daily/monthly spend caps on bridge operations, implement circuit breaker after threshold exceeded, and add billing alerts for unusual bridge usage patterns.
HIGHUnbounded file download without size validation or rate limiting
src/bridge/inboundAttachments.ts:78
[AGENTS: Wallet]denial_of_wallet
resolveInboundAttachments() fetches files from bridge API without file size limits, download rate limiting, or per-user quotas. An attacker could trigger massive file downloads, consuming bandwidth and storage costs.
Suggested Fix
Add file size caps (e.g., 10MB per file), implement download rate limiting, and add per-user/monthly download quotas.
HIGHOAuth token expiration handling may expose stale credentials
src/bridge/initReplBridge.ts:158
[AGENTS: Infiltrator]authentication
The bridge initialization checks OAuth token expiration but persists dead token state with failCount. If multiple processes fail to refresh tokens simultaneously, they may all attempt to use the same expired token, potentially causing credential leakage through repeated 401 responses to the auth server.
Suggested Fix
Add rate limiting on OAuth refresh attempts per token and implement circuit breaker pattern to prevent repeated auth server calls with known-dead tokens.
HIGHSession credentials logged in debug output
src/bridge/sessionRunner.ts:285
[AGENTS: Warden]privacy
Session access tokens are logged in debug output with 'accessToken=present' or 'accessToken=MISSING'. This exposes credential information in logs without proper masking or consent.
Suggested Fix
Mask the token value: 'accessToken=${opts.accessToken ? '***REDACTED***' : 'MISSING'}' and ensure debug logging is only enabled with explicit user consent.
HIGHDebug logs contain sensitive session identifiers
src/bridge/sessionRunner.ts:286
[AGENTS: Warden]privacy
Debug logs include sessionId, sdkUrl, and accessToken in a single log line. Session identifiers are PII that should not be logged without consent and should be masked.
Suggested Fix
Remove sessionId from debug logs or add consent check: if (deps.verbose && hasUserConsentedToDebugLogs()) { deps.onDebug(`[bridge:session] sessionId=${opts.sessionId}...`); }
HIGHUnvalidated user-provided API base URL in BridgeConfig
src/bridge/types.ts:87
[AGENTS: Gateway]edge_security
The BridgeConfig type accepts apiBaseUrl and sessionIngressUrl as user-provided strings without validation. These URLs are used for HTTP polling and WebSocket connections respectively. Attackers could supply malicious URLs to perform SSRF, redirect traffic to internal services, or exfiltrate data.
Suggested Fix
Add URL validation with strict scheme/host checks before using these values. Only allow https:// or localhost/127.0.0.1/0.0.0.1 for local development. Reject IP addresses with private ranges that could be used for internal network scanning.
HIGHMCP server URLs exposed via mcp list command
src/cli/handlers/mcp.tsx:238
[AGENTS: Recon]info_disclosure
The mcp list command outputs all configured MCP server URLs and connection types to console. This reveals internal service infrastructure and network topology.
Suggested Fix
Add authentication requirement for mcp list command. Consider outputting only server names by default, with verbose flag for detailed info.
HIGHMCP server configuration exposed via mcp get command
src/cli/handlers/mcp.tsx:285
[AGENTS: Recon]info_disclosure
The mcp get command outputs server URLs, OAuth client IDs, callback ports, and environment variables to console. This reveals internal service endpoints and authentication configuration to anyone with access.
Suggested Fix
Add authentication check before allowing mcp get to display sensitive configuration. Consider redacting URLs and OAuth credentials from console output.
HIGHMCP server configuration loaded without cryptographic verification
src/cli/handlers/mcp.tsx:4801
[AGENTS: Supply]supply_chain
mcpAddJsonHandler accepts user-provided JSON configuration for MCP servers without verifying the source integrity or validating against a trusted registry. User can inject arbitrary MCP server configurations that could compromise the system.
Suggested Fix
Implement cryptographic signing of MCP server configurations and verify signatures before loading. Add registry verification for all external MCP server sources.
HIGHMissing JSON parsing depth limit
src/cli/structuredIO.ts:237
[AGENTS: Sentinel]input_validation
**Perspective 1:** jsonParse(line) is called without depth or size limits, allowing entity expansion attacks (Billion Laughs) that could cause memory exhaustion or denial of service through exponential XML/JSON expansion. **Perspective 2:** The line parameter passed to jsonParse() has no maximum length validation, allowing extremely long input strings that could exhaust memory during parsing.
HIGHAlways-accept HTTP status codes bypasses error handling
src/cli/transports/ccrClient.ts:77
[AGENTS: Phantom]api_security
The `alwaysValidStatus()` callback accepts ALL HTTP status codes as valid (returns true unconditionally). This bypasses axios's default error handling, potentially allowing the client to process error responses (4xx, 5xx) as successful operations. This could mask server-side failures and allow attackers to probe for vulnerabilities.
Suggested Fix
Remove the `validateStatus: alwaysValidStatus` option or implement proper status code validation that only accepts 2xx responses for success.
HIGHUser-provided URL passed to transport without validation
src/cli/transports/transportUtils.ts:18
[AGENTS: Gateway]edge_security
The getTransportForUrl function accepts a URL parameter that is used directly to construct SSE or WebSocket connections. If the URL comes from user input, it could be manipulated to connect to malicious endpoints.
Suggested Fix
Validate URL protocol and host before creating transport: if (!['http:', 'https:', 'ws:', 'wss:'].includes(url.protocol)) throw new Error('Invalid protocol');
HIGHRemote control session entry point with minimal access controls
src/commands/bridge/index.ts:8
[AGENTS: Infiltrator]unprotected_entry_point
The bridge command enables remote-control sessions connecting this terminal. The isEnabled() function only checks feature flag and isBridgeEnabled() - no authentication, authorization, or session validation is visible in this entry point.
Suggested Fix
Add authentication verification, session validation, and rate limiting before allowing remote control connections. Implement mutual TLS or token-based authentication for bridge sessions.
HIGHPlugin source validation gap - no cryptographic verification
src/commands/plugin/AddMarketplace.tsx:48
[AGENTS: Supply]supply_chain
addMarketplaceSource() accepts marketplace sources (GitHub, HTTPS, local paths) without cryptographic signature verification. Malicious actors could publish tampered marketplace manifests that appear legitimate.
Suggested Fix
Implement signature verification for marketplace manifests using public key infrastructure or checksum validation against trusted registry
HIGHSSRF via GitHub Repository URL Construction
src/commands/plugin/BrowseMarketplace.tsx:580
[AGENTS: Specter]ssrf
GitHub URL is constructed from githubRepo_0 which comes from plugin metadata. If plugin metadata is user-controllable, this could enable SSRF through crafted repository names.
Suggested Fix
Validate GitHub repository format before URL construction. Use regex to ensure valid repo pattern.
HIGHGitHub token exposure in API calls
src/commands/remote-setup/api.ts:64
[AGENTS: Supply]supply_chain
The importGithubToken() function passes the GitHub token to an external API endpoint. While the RedactedGithubToken class masks the token in string representations, the actual token value is sent in the request body. There's no verification that the receiving endpoint is legitimate or that the token won't be logged or exposed in error responses.
Suggested Fix
Implement endpoint verification before sending credentials, add request/response signing, and ensure sensitive data is never included in error messages or logs.
HIGHPlugin execution without cryptographic verification or provenance tracking
src/commands/thinkback-play/thinkback-play.ts:36
[AGENTS: Supply]supply_chain
Plugin is loaded and executed without any cryptographic signature verification or provenance tracking. The plugin's install path is used directly without verifying the artifact's integrity or origin.
Suggested Fix
Add artifact signature verification before execution and track provenance metadata for all plugin artifacts
HIGHAuto-update source integrity not verified
src/commands/upgrade/index.ts:1
[AGENTS: Supply]supply_chain
The upgrade command loads upgrade functionality without verifying the integrity of downloaded artifacts. Upgrade packages could be tampered with to inject malicious code or backdoors.
Suggested Fix
Implement cryptographic signature verification for all upgrade artifacts. Add provenance tracking for upgrade packages. Verify against a trusted source before installation.
HIGHAuto-update source integrity not verified
src/components/AutoUpdater.tsx:47
[AGENTS: Supply]supply_chain
AutoUpdater fetches latest version from external API without verifying the source integrity or validating the update against a known-good signature. An attacker who compromises the update server could inject malicious code.
Suggested Fix
Implement cryptographic signature verification for all updates. Fetch update metadata from a signed source and verify against a public key stored in a secure location.
HIGHNo provenance tracking for update artifacts
src/components/AutoUpdater.tsx:51
[AGENTS: Supply]supply_chain
Update process lacks provenance tracking. There's no record of which update was applied, from which source, or when. This makes it impossible to audit or trace malicious updates.
Suggested Fix
Implement provenance tracking that records update source, timestamp, hash, and verification status for each update applied.
HIGHSettings stored without encryption at rest
src/components/Settings/Settings.tsx:1
[AGENTS: Compliance]regulatory
Settings configuration is persisted via saveGlobalConfig() without encryption. Violates SOC 2 CC6.1 (data protection) and PCI-DSS 3.4 (protection of stored data). User settings may contain sensitive configuration including API keys, authentication tokens, and workspace paths.
Suggested Fix
Encrypt settings data before storage using AES-256 with key derivation from master key. Implement encryption at rest for all persisted configuration data.
HIGHSession IDs logged in analytics without consent tracking
src/components/StatusLine.tsx:288
[AGENTS: Warden]privacy
**Perspective 1:** Session ID is logged in analytics event 'tengu_status_line_mount' without explicit consent tracking or user opt-out mechanism. Session identifiers are PII that should not be sent to analytics without consent. **Perspective 2:** Status line configuration settings including command and padding are logged to analytics. These settings may contain user preferences that constitute PII and should not be tracked without explicit consent.
Suggested Fix
Add consent check before logging session ID: if (!hasUserConsentedToAnalytics()) return; and add 'session_id' to the list of data that requires explicit consent tracking.
HIGHOAuth flow uses unvalidated transport type
src/components/mcp/MCPAgentServerMenu.tsx:60
[AGENTS: Lockdown]authentication
The performMCPOAuthFlow is called with transport type cast from agentServer.transport without validation. This could allow HTTP transport to be used for OAuth flows, potentially exposing credentials over unencrypted connections.
Suggested Fix
Validate that agentServer.transport is 'https' before initiating OAuth flow, or add a security check that rejects HTTP transports for authentication flows.
HIGHOAuth authorization URL not validated for scheme
src/components/mcp/MCPAgentServerMenu.tsx:61
[AGENTS: Lockdown]authentication
The authorizationUrl is set from performMCPOAuthFlow without validation that it uses HTTPS. This could allow attackers to intercept OAuth tokens via man-in-the-middle attacks.
Suggested Fix
Add validation to ensure authorizationUrl uses 'https://' scheme before displaying to user, or reject HTTP URLs entirely.
HIGHOAuth authorization URL scheme not validated
src/components/mcp/MCPRemoteServerMenu.tsx:254
[AGENTS: Lockdown]authentication
The authorization URL is constructed without validating the scheme. An attacker could potentially inject a malicious URL scheme (e.g., javascript:, data:) if the URL construction is not properly sanitized, leading to credential interception or code execution.
Suggested Fix
Validate that the authorization URL uses https:// scheme before opening in browser: const url = `${claudeAiBaseUrl}/settings/connectors`; if (!url.startsWith('https://')) throw new Error('Invalid OAuth URL scheme');
HIGHOAuth flow uses unvalidated transport type
src/components/mcp/MCPRemoteServerMenu.tsx:262
[AGENTS: Lockdown]authentication
The OAuth flow constructs URLs without validating the transport type. If the base URL is not properly validated, it could allow redirect to malicious endpoints or protocol downgrade attacks.
Suggested Fix
Add URL validation before OAuth flow: const url = new URL(claudeAiBaseUrl); if (!url.protocol.startsWith('https:')) throw new Error('OAuth must use HTTPS');
HIGHFile path from user input used without path traversal validation
src/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.tsx:18
[AGENTS: Sanitizer]sanitization
The file_path from tool input is used directly in readFileSync and FileWriteToolDiff without checking for path traversal attempts. An attacker could use ../ sequences to access files outside the intended directory.
Suggested Fix
Validate file path before use: const resolvedPath = resolve(expandPath(file_path)); if (!isWithinWorkingDirectory(resolvedPath)) throw new Error('Path traversal not allowed');
HIGHPath traversal vulnerability in file read operation
src/components/permissions/SedEditPermissionRequest/SedEditPermissionRequest.tsx:32
[AGENTS: Phantom]path_traversal
The filePath parameter from sedInfo is used directly with getFsImplementation().readFile() without validation. An attacker could craft a sed edit command with a relative path like ../../etc/passwd to read arbitrary files.
Suggested Fix
Validate filePath is within the project root before reading. Use path.resolve() and check if the resolved path starts with the project root.
HIGHFile read/write without proper permission checks
src/components/permissions/SedEditPermissionRequest/SedEditPermissionRequest.tsx:39
[AGENTS: Infiltrator]attack_surface
The component reads and writes files based on user-controlled filePath without verifying the user has permission to access or modify that file. The _simulatedSedEdit bypass mechanism could be exploited.
Suggested Fix
Implement file permission checks before read/write operations. Validate that the target file is within allowed directories.
HIGHHardcoded GrowthBook client keys exposed in source code
src/constants/keys.ts:5
[AGENTS: Recon]info_disclosure
GrowthBook analytics client keys are hardcoded in source code: 'sdk-yZQvlplybuXjYh6L', 'sdk-xRVcrliHIlrg4og4', 'sdk-zAZezfDKGoZuXXKe'. These keys can be extracted by code analysis and used to identify the application instance and potentially abuse GrowthBook analytics services.
Suggested Fix
Move keys to environment variables or a secure secrets management system. Never hardcode API keys in source code.
HIGHSandbox allows unsandboxed commands by default
src/entrypoints/sandboxTypes.ts:83
[AGENTS: Lockdown]configuration
allowUnsandboxedCommands defaults to true, enabling commands to bypass sandbox via dangerouslyDisableSandbox parameter. This defeats the primary security control when sandboxing is enabled.
Suggested Fix
Change default to false and require explicit opt-in for unsandboxed command execution
HIGHUnbounded polling interval with no rate limiting
src/hooks/useInboxPoller.ts:40
[AGENTS: Siege]dos
The inbox poller runs every 1 second (INBOX_POLL_INTERVAL_MS = 1000) without any rate limiting on the poll function itself. An attacker could trigger this hook repeatedly through state changes, causing continuous mailbox reads and message processing that could exhaust CPU and network resources.
Suggested Fix
Add rate limiting to the poll function using a throttle or debounce mechanism, and add maximum message processing limits per poll cycle.
HIGHSession ID logged in debug message
src/hooks/useRemoteSession.ts:135
[AGENTS: Trace]logging
Remote session configuration including sessionId is logged in debug mode, potentially exposing user session identifiers
Suggested Fix
Remove sessionId from logForDebugging call or mask it before logging
HIGHSkill names logged in analytics without redaction
src/hooks/useSkillImprovementSurvey.ts:45
[AGENTS: Warden]privacy
Skill improvement survey logs skill names in analytics events (line 45, 62). Skill names may contain PII or proprietary business information that users expect to remain private. No consent tracking or data minimization applied.
Suggested Fix
Remove _PROTO_skill_name from analytics events or redact skill names before logging. Consider making this opt-in via user consent.
HIGHUnbounded while loop in stripTrailing function
src/hooks/useVoiceIntegration.tsx:158
[AGENTS: Siege]dos
The stripTrailing function contains a while loop that iterates through characters without a maximum iteration count. Malicious input with extremely long trailing character sequences could cause CPU exhaustion through excessive iterations.
Suggested Fix
Add a maximum iteration limit: while (trailing < scan.length && trailing < MAX_STRIP_ITERATIONS && scan[scan.length - 1 - trailing] === char) { trailing++; }
HIGHUnvalidated URL in OSC 8 hyperlink wrapper
src/ink/render-node-to-output.ts:247
[AGENTS: Sanitizer]sanitization
The wrapWithOsc8Link function accepts a url parameter and embeds it directly into terminal escape sequences without any validation. An attacker could inject malicious URLs or escape sequences that could be interpreted by terminal emulators.
Suggested Fix
Validate the URL parameter before embedding: const url = sanitizeUrl(url); if (!url) return text; return `${OSC}8;;${url}${BEL}${text}${OSC}8;;${BEL}`
HIGHUnvalidated OSC 52 clipboard content - potential XSS via clipboard injection
src/ink/termio/osc.ts:185
[AGENTS: Sanitizer]sanitization
setClipboard() accepts arbitrary text and writes it to clipboard via OSC 52 without sanitization. Malicious content could be injected into clipboard and potentially executed when pasted into vulnerable applications. The function doesn't validate or sanitize the input text before base64 encoding.
Suggested Fix
Add input validation to reject potentially malicious content. Consider sanitizing HTML/script tags before clipboard write: if (text.includes('<script') || text.includes('javascript:')) throw new Error('Invalid clipboard content');
HIGHUser query concatenated directly into LLM system prompt without delimiters
src/memdir/findRelevantMemories.ts:15
[AGENTS: Prompt]prompt_injection
The SELECT_MEMORIES_SYSTEM_PROMPT is concatenated with user query and available memories without structural separation. An attacker could craft a query that contains adversarial instructions to manipulate memory selection, potentially causing the LLM to retrieve malicious or irrelevant memories based on injected commands rather than actual relevance.
Suggested Fix
Use clear delimiters and role-based separation: `system: ${SELECT_MEMORIES_SYSTEM_PROMPT} user: Query: ${query} Available memories: ${manifest}`
HIGHRemote session permission handling lacks input validation
src/remote/RemoteSessionManager.ts:108
[AGENTS: Infiltrator]trust_boundary
The respondToPermissionRequest method sends permission responses to CCR without validating the requestId format or checking for replay attacks. The pendingPermissionRequests Map is cleared after sending response, but there's no rate limiting or duplicate request detection.
Suggested Fix
Add requestId validation and rate limiting: const rateLimit = new Map<string, number>(); // Check if request was already processed recently if (rateLimit.has(requestId) && rateLimit.get(requestId) > Date.now() - 1000) { logError('Duplicate permission request'); return; } rateLimit.set(requestId, Date.now());
HIGHUnbounded session memory extraction without rate limiting
src/services/SessionMemory/sessionMemory.ts:285
[AGENTS: Wallet]denial_of_wallet
The extractSessionMemory hook runs as a forked agent with token usage tracking, but there is no rate limiting on how frequently extractions can be triggered. An attacker could force many extractions in quick succession, driving up token costs and resource usage.
Suggested Fix
Add rate limiting to the extractSessionMemory hook with a maximum extraction frequency per session (e.g., max 1 extraction per X minutes). Implement a sliding window counter to track extraction frequency.
HIGHUser metadata logged in analytics without explicit consent tracking
src/services/analytics/firstPartyEventLogger.ts:112
[AGENTS: Warden]privacy
The logEventTo1PAsync function calls getCoreUserData(true) which may include PII (accountUuid, organizationUuid, etc.) and logs it in event attributes. No consent tracking or user opt-out mechanism is present for this data collection.
Suggested Fix
Add consent check before logging user metadata: const userMetadata = getCoreUserData(true); if (userConsentForAnalytics) { attributes.user_metadata = userMetadata; }
HIGHGrowthBook user attributes logged without consent
src/services/analytics/firstPartyEventLogger.ts:157
[AGENTS: Warden]privacy
logGrowthBookExperimentTo1P logs userAttributes including sessionId and userAttributes JSON string, which may contain PII. No consent tracking for this data collection.
Suggested Fix
Add consent check: if (userConsentForAnalytics && userConsentForExperiments) { firstPartyEventLogger.emit({ body: 'growthbook_experiment', attributes }); }
HIGHMissing per-tenant spend caps on metered event logging service
src/services/analytics/firstPartyEventLoggingExporter.ts:1
[AGENTS: Wallet]denial_of_wallet
Event logging exporter sends batches to external API without per-tenant or per-user spend caps. Adversarial traffic could trigger massive event logging volumes, driving up storage and API costs without budget protection.
Suggested Fix
Implement per-tenant event logging quotas with hard limits. Add billing alerts when approaching quota thresholds.
HIGHMissing JSON parsing depth limit
src/services/analytics/growthbook.ts:237
[AGENTS: Sentinel]input_validation
JSON.parse() is called on CLAUDE_INTERNAL_FC_OVERRIDES env var without depth limiting. Maliciously crafted deeply nested JSON can cause stack overflow or memory exhaustion.
Suggested Fix
Add a JSON.parse limit using a custom parser or wrap with a depth-limited JSON parser library
HIGHTool input telemetry may expose sensitive data
src/services/analytics/metadata.ts:567
[AGENTS: Chaos]data_exposure
**Perspective 1:** extractToolInputForTelemetry truncates tool inputs but doesn't redact sensitive patterns like API keys, tokens, or credentials. The truncation at 512 chars may still expose sensitive information in the first portion. **Perspective 2:** Tool input telemetry collection may capture sensitive user inputs including API keys, credentials, or proprietary data before sanitization.
Suggested Fix
Add pattern-based redaction for common sensitive data patterns (API keys, tokens, credentials) before truncation
HIGHFile extension extraction may leak sensitive filenames
src/services/analytics/metadata.ts:634
[AGENTS: Chaos]data_exposure
**Perspective 1:** getFileExtensionsFromBashCommand extracts file extensions from bash commands for analytics. While it limits extension length, it still logs file paths that could contain sensitive information (API keys, PII, internal paths) in the command arguments. **Perspective 2:** File extension extraction logic could expose sensitive filenames in analytics metadata, potentially revealing internal file paths or project structure.
Suggested Fix
Add path sanitization to strip sensitive path components before logging file extensions
HIGHuploadSessionFiles accepts unbounded array without size validation
src/services/api/filesApi.ts:480
[AGENTS: Wallet]unbounded_batch_operations
uploadSessionFiles() processes file uploads in parallel with concurrency limit of 5, but no maximum array size validation. Each file upload is a billable operation. Attackers could submit thousands of files to drain budget.
Suggested Fix
Validate array size (e.g., max 100 files per batch), implement per-user daily upload limits, add file size validation before upload, add rate limiting on upload endpoint
HIGHuploadSessionFiles accepts unbounded array without size validation
src/services/api/filesApi.ts:480
[AGENTS: Wallet]denial_of_wallet
The uploadSessionFiles endpoint accepts an unbounded array of files without size limits. Each file upload triggers storage costs and potential downstream processing costs.
Suggested Fix
Add per-request limits (max 100 files, 50MB total) and per-user daily upload quotas with rate limiting.
HIGHDebug endpoint reveals internal session state
src/services/api/sessionIngress.ts:380
[AGENTS: Recon]debug_endpoint_exposure
The `findLastUuid` function and `fetchSessionLogsFromUrl` function expose internal session management details including UUID handling, session state recovery logic, and concurrent modification detection. Error messages reveal internal state tracking mechanisms.
Suggested Fix
Sanitize error messages to remove internal state details like UUID handling logic and session recovery mechanisms.
HIGHTelemetry error includes full error details
src/services/api/withRetry.ts:319
[AGENTS: Fuse]error_security
Telemetry initialization error logs complete error details including potential sensitive context. This could leak internal state, configuration, or request information to analytics systems.
HIGHFile paths tracked without consent or encryption
src/services/diagnosticTracking.ts:127
[AGENTS: Warden]privacy
Diagnostic tracking service stores file URIs and diagnostic data in baseline maps without encryption at rest. The service tracks which files are opened, edited, and their diagnostic states across sessions. No consent tracking or data minimization for file path collection.
HIGHRAG poisoning via unfiltered existing memories in extraction prompt
src/services/extractMemories/prompts.ts:38
[AGENTS: Prompt]rag_poisoning
The opener() function concatenates existingMemories directly into the extraction agent's system prompt without provenance filtering or sanitization. If memories are user-submittable or editable, adversarial memories can inject instructions that the extraction agent will execute, enabling RAG poisoning attacks where poisoned content influences memory extraction decisions.
Suggested Fix
Add provenance metadata validation and content filtering before including memories in the prompt. Implement a whitelist of trusted memory sources and add sanitization to strip potential injection patterns.
HIGHRAG poisoning via unfiltered existing memories in extraction prompt
src/services/extractMemories/prompts.ts:38
[AGENTS: Prompt]llm_security
Memory extraction prompt concatenates existing memories directly into the system prompt without provenance filtering or delimiters. Untrusted or poisoned memories can be injected into the LLM context, causing the extraction process to generate compromised or adversarial memory entries.
Suggested Fix
Add clear structural delimiters and provenance markers between existing memories and system instructions. Implement memory source filtering to exclude memories from untrusted sources.
HIGHUnbounded polling interval with no rate limiting
src/services/mcp/auth.ts:40
[AGENTS: Siege]dos
The OAuth polling mechanism in performMCPOAuthFlow can hold connections open for up to 5 minutes (5 * 60 * 1000ms) without rate limiting. An attacker could trigger repeated authentication flows, exhausting server resources and connection pools.
Suggested Fix
Add rate limiting to OAuth flow attempts with a cooldown period between consecutive auth attempts for the same server.
HIGHExternal registry fetch without integrity verification
src/services/mcp/channelAllowlist.ts:36
[AGENTS: Supply]supply_chain
The getChannelAllowlist function fetches the allowlist from GrowthBook feature flags without any integrity verification. An attacker could potentially inject malicious channel plugins into the allowlist, enabling unauthorized MCP server connections.
Suggested Fix
Implement cryptographic signature verification for the allowlist data. Use signed feature flag updates with provenance tracking. Add integrity checks before applying allowlist changes.
HIGHChannel gate reason field exposes internal policy configuration
src/services/mcp/channelNotification.ts:185
[AGENTS: Recon]info_disclosure
The gateChannelServer function returns a ChannelGateResult with a 'reason' field that exposes detailed internal policy checks including subscription type validation, org policy configuration, session allowlist state, and marketplace verification details. An attacker can fingerprint the authentication flow, subscription tiers, and policy enforcement mechanisms.
Suggested Fix
Return generic reason messages without exposing internal policy logic. Use a whitelist of allowed reason strings instead of dynamic messages.
HIGHOAuth tokens cached without expiration check
src/services/mcp/claudeai.ts:45
[AGENTS: Deadbolt]sessions
The `getClaudeAIOAuthTokens()` function is memoized for session lifetime but never checks token expiration. Tokens may be used after expiry, and there's no refresh mechanism. This creates stale token vulnerabilities where expired credentials remain valid in cache.
Suggested Fix
Add token expiration check before use: `if (tokens.expiresAt < Date.now()) { await refreshTokens() }`. Clear cache on token refresh.
HIGHUnbounded MCP elicitation hook execution without rate limiting
src/services/mcp/elicitationHandler.ts:105
[AGENTS: Wallet]denial_of_wallet
The runElicitationResultHooks function executes user-defined hooks that may trigger expensive downstream operations. No rate limiting or per-tenant spend caps on hook execution. Malicious hooks could trigger repeated LLM calls, file operations, or external API calls without cost controls.
Suggested Fix
Add rate limiting to executeElicitationHooks and executeElicitationResultHooks with per-tenant quotas. Implement budget circuit breaker for hook execution costs.
HIGHskipBrowserOpen bypasses browser-based authentication
src/services/oauth/index.ts:58
[AGENTS: Phantom]authentication
The skipBrowserOpen option allows callers to bypass the browser-based OAuth flow entirely. When set to true, both manual and automatic URLs are passed to the caller who decides how to handle them. This could allow attackers to intercept the OAuth flow if the caller doesn't properly secure the URLs.
Suggested Fix
Add validation to ensure skipBrowserOpen is only used in trusted contexts (e.g., SDK control protocol). Add logging when this option is used.
HIGHMissing authorization code validation before token exchange
src/services/oauth/index.ts:100
[AGENTS: Phantom]authentication
The token exchange at line 100-103 uses the authorization code directly without validating it against the expected state parameter. This could allow replay attacks where an attacker captures and reuses an authorization code.
Suggested Fix
Validate the authorization code matches the expected state before exchanging for tokens. Add nonce validation if supported.
HIGHRemote settings fetch without integrity verification
src/services/remoteManagedSettings/index.ts:1
[AGENTS: Supply]supply_chain
Remote managed settings are fetched from an external API without cryptographic integrity verification. The service uses checksum-based HTTP caching but does not verify the authenticity of the settings payload. An attacker controlling the API endpoint could inject malicious configuration settings.
Suggested Fix
Implement signed settings with cryptographic signature verification. Use TLS certificate pinning for the settings endpoint. Add integrity checksums that are cryptographically signed by a trusted authority.
HIGHRetry loop against paid API without budget circuit breaker
src/services/remoteManagedSettings/index.ts:185
[AGENTS: Wallet]denial_of_wallet
fetchWithRetry retries up to DEFAULT_MAX_RETRIES + 1 times (6 attempts) with exponential backoff but no maximum total spend cap. If the API endpoint is metered (e.g., per-request billing), this creates a 6x cost multiplier on failed requests with no budget tripwire.
Suggested Fix
Add per-tenant daily/monthly spend caps, implement circuit breaker after N failures, add billing alert thresholds, and cap total retry cost at a small fraction of monthly budget.
HIGHFail-open pattern on authentication errors
src/services/remoteManagedSettings/index.ts:258
[AGENTS: Fuse]error_security
Authentication errors (401, 403) skip retries with skipRetry: true, but this could allow attackers to probe auth boundaries. The error message 'Not authorized for remote settings' is generic but the fail-open behavior combined with the retry logic could enable enumeration attacks.
Suggested Fix
Add explicit audit logging for auth failures and consider returning a consistent error response that doesn't reveal whether the endpoint exists or if auth is the issue.
HIGHRemote settings cached without TTL or deletion policy
src/services/remoteManagedSettings/index.ts:445
[AGENTS: Warden]data_retention
Remote managed settings are persisted to disk at line 445 with no explicit time-to-live (TTL) or automatic deletion mechanism. Settings may contain enterprise policy configurations that could include user-specific data. GDPR Article 17 (right to erasure) requires mechanisms to delete personal data upon request.
Suggested Fix
Add TTL-based cache expiration and implement a 'clearRemoteManagedSettings' function that can be called on user deletion requests
HIGHUser intent text concatenated into LLM prompt without sanitization
src/services/toolUseSummary/toolUseSummaryGenerator.ts:56
[AGENTS: Prompt]prompt_injection
The lastAssistantText from user conversation is directly concatenated into the tool use summary prompt. An attacker could craft assistant messages containing adversarial instructions that manipulate the Haiku model to generate misleading summaries, potentially hiding malicious tool usage patterns.
Suggested Fix
Add structural delimiters and length validation: `contextPrefix = lastAssistantText ? `User's intent: ${lastAssistantText.slice(0, 200).trim()}` : ''`
HIGHWebSocket URL constructed from unvalidated environment variable
src/services/voiceStreamSTT.ts:108
[AGENTS: Sanitizer]sanitization
VOICE_STREAM_BASE_URL is used directly in URL construction without validation. An attacker could inject malicious WebSocket endpoints via environment variable override, potentially enabling SSRF or connecting to attacker-controlled servers.
Suggested Fix
Validate VOICE_STREAM_BASE_URL against allowed hostnames and protocols before use. Reject URLs with unexpected schemes or hosts.
HIGHUnsafe string interpolation in skill prompt template
src/skills/bundled/skillify.ts:176
[AGENTS: Sentinel]template_injection
The SKILLIFY_PROMPT template directly interpolates user-supplied args and userMessages without sanitization. An attacker could inject malicious content into the prompt that gets sent to the LLM, potentially causing prompt injection attacks.
HIGHAgent tool execution with insufficient permission validation
src/tools/AgentTool/agentToolUtils.ts:1
[AGENTS: Infiltrator]privilege_escalation
The filterToolsForAgent function allows certain tools for agents with minimal validation. The permissionMode checks may not properly enforce isolation between agents, potentially allowing privilege escalation if an agent gains access to tools it shouldn't have.
Suggested Fix
Implement strict permission mode enforcement with explicit allowlists per agent type. Add audit logging for all agent tool executions.
HIGHVerification agent lacks rate limiting on verification operations
src/tools/AgentTool/built-in/verificationAgent.ts:1
[AGENTS: Wallet]unauthenticated_expensive_operations
VERIFICATION_AGENT runs builds, tests, linters, and checks that may trigger expensive LLM API calls, GPU compute, or vector database queries. No rate limiting, no authentication checks on verification endpoint. Could be abused to exhaust GPU/LLM budgets.
Suggested Fix
Add rate limiting on verification operations, implement per-tenant verification quotas, add max token limits for LLM calls, implement GPU usage caps
HIGHVerification agent lacks rate limiting on verification operations
src/tools/AgentTool/built-in/verificationAgent.ts:1
[AGENTS: Wallet]denial_of_wallet
Verification agent operations trigger LLM inference without rate limiting. Unlimited verification requests could drain LLM API budgets.
Suggested Fix
Add per-user rate limits (e.g., 50 verifications/hour) and cache verification results to prevent duplicate expensive calls.
HIGHForked subagent lacks token budget enforcement
src/tools/AgentTool/forkSubagent.ts:178
[AGENTS: Wallet]denial_of_wallet
The buildForkedMessages function creates child agent messages without token budget limits. Forked agents inherit the parent's tool pool and can execute unlimited tool calls, potentially triggering unbounded LLM token consumption and API costs.
Suggested Fix
Implement per-fork token budget limits (e.g., max 5000 tokens per fork). Add circuit breaker that terminates fork when budget threshold is exceeded. Track cumulative token usage across parent and all fork children.
HIGHAgent file loading without path validation
src/tools/AgentTool/loadAgentsDir.ts:334
[AGENTS: Infiltrator]path_traversal
The loadAgentsDir function loads markdown files from 'agents' subdirectory using loadMarkdownFilesForSubdir. If the directory resolution is not properly sandboxed, an attacker could potentially load arbitrary files or inject malicious agent definitions.
Suggested Fix
Add explicit path validation to ensure agents directory is within expected boundaries. Implement file type validation and content sanitization for agent definitions.
HIGHMCP server connections without integrity verification
src/tools/AgentTool/runAgent.ts:123
[AGENTS: Supply]supply_chain
Agent execution connects to MCP servers defined in agent frontmatter without verifying server integrity or validating that the server configuration hasn't been tampered with. Malicious agents could inject harmful MCP servers.
Suggested Fix
Implement cryptographic verification of MCP server configurations and validate server responses against expected signatures.
HIGHMissing command injection validation in sed edit parser
src/tools/BashTool/BashTool.tsx:108
[AGENTS: Sentinel]input_validation
The sed edit parser accepts user-provided file paths and regex patterns without validation. A malicious user could craft a sed command with path traversal or shell metacharacters that execute arbitrary commands when the command is passed to the shell.
Suggested Fix
Validate filePath against project root using path.resolve and path.relative before processing. Sanitize regex patterns to prevent regex injection attacks.
HIGHDangerously disable sandbox flag in tool schema
src/tools/BashTool/BashTool.tsx:127
[AGENTS: Prompt]tool_injection
The 'dangerouslyDisableSandbox' flag is exposed in the BashTool input schema (line 127), allowing user-controlled input to bypass sandbox protections. This flag can be set to true to override sandbox mode and run commands without sandboxing, creating a direct path to command injection if the flag validation is insufficient.
Suggested Fix
Remove 'dangerouslyDisableSandbox' from the model-facing input schema. This should only be a system-level configuration, not a user-controllable tool parameter. If sandbox bypass is needed, it should be controlled via environment variables or admin settings, not user input.
HIGHUser-controlled bash commands executed without strict validation
src/tools/BashTool/BashTool.tsx:127
[AGENTS: Prompt]command_injection
The BashTool accepts arbitrary user-provided commands via the 'command' field and executes them through shell (line 1046). While there's permission checking and sandboxing, the combination of user-controlled command execution with a 'dangerouslyDisableSandbox' flag creates an attack surface where malicious commands could bypass security controls.
Suggested Fix
Implement strict command whitelisting or pattern-based validation before execution. Consider requiring explicit user confirmation for commands that match dangerous patterns (rm -rf, curl to external URLs, etc.). The permission system should be more granular and prevent entire command classes from being executed.
HIGHUnbounded command execution without input size limits
src/tools/BashTool/BashTool.tsx:1045
[AGENTS: Siege]dos
The BashTool executes shell commands from user input without validating command length or complexity. Commands can be arbitrarily long and complex, potentially causing resource exhaustion through CPU-intensive operations, large output generation, or infinite loops.
Suggested Fix
Add command length validation (e.g., max 10KB) and complexity limits (e.g., max 100 tokens, max 50 subcommands) before execution
HIGHDangerously disable sandbox parameter allows security bypass
src/tools/BashTool/BashTool.tsx:1234
[AGENTS: Compliance]access_control
The BashTool accepts a 'dangerouslyDisableSandbox' parameter that can be set to true to override sandbox mode and run commands without sandboxing. This creates a potential privilege escalation vector where an attacker could exploit this to execute arbitrary code without isolation controls.
Suggested Fix
Remove the dangerouslyDisableSandbox parameter from the public schema. If sandbox bypass is needed for legitimate use cases, implement a multi-step approval workflow with explicit user confirmation and audit logging.
HIGHShell Command Prefix Injection via CLAUDE CODE SHELL PREFIX
src/tools/BashTool/BashTool.tsx:1362
[AGENTS: Specter]injection
The shell command execution allows prefix injection through user input. Attackers can prepend shell commands using special characters or command chaining operators.
Suggested Fix
Parse and validate each command token individually. Reject commands containing shell metacharacters (|, &, ;, `, $, <, >, etc.) or implement strict allowlist validation per command.
HIGHSensitive command content logged in analytics
src/tools/BashTool/bashPermissions.ts:97
[AGENTS: Warden]privacy
logClassifierResultForAnts function logs the full bash command including code and filepaths to analytics. Even though marked ANT-ONLY, this captures potentially sensitive code, credentials, or file paths that could be exposed in analytics systems.
Suggested Fix
Remove command content from analytics logging. Only log command prefix, hash, or sanitized version that doesn't expose actual code or file paths.
HIGHCommand Injection via sed Expression Parsing
src/tools/BashTool/sedEditParser.ts:108
[AGENTS: Razor]security
The sed expression parser accepts user-provided patterns and replacements without proper escaping. While it validates flags, the pattern and replacement strings could contain shell metacharacters that, when executed via sed -i, could lead to command injection if the sed command is later used in a shell context.
Suggested Fix
Sanitize pattern and replacement strings to remove or escape shell metacharacters, and ensure sed is never called with unsanitized user input.
HIGHSandbox bypass via user-controlled task output
src/tools/BashTool/shouldUseSandbox.ts:127
[AGENTS: Prompt]llm_security
TaskOutputTool passes task output to BashToolResultMessage with dangerouslyDisableSandbox: true, allowing user-controlled task output to bypass sandbox restrictions. This creates an injection vector where malicious commands in task output execute unsandboxed.
Suggested Fix
Never set dangerouslyDisableSandbox to true for user-controlled content. All task output should be sandboxed regardless of source.
HIGHUNC path filesystem access bypass
src/tools/LSPTool/LSPTool.ts:145
[AGENTS: Infiltrator]attack_surface
UNC paths (\\\\ or //) are skipped for filesystem operations to prevent NTLM credential leaks, but this check only validates the absolutePath. If a user provides a relative path that resolves to a UNC path after expandPath(), the bypass check fails. The validation should check the resolved path, not the input.
Suggested Fix
const resolvedPath = expandPath(input.filePath); if (resolvedPath.startsWith('\\\\') || resolvedPath.startsWith('//')) { return { result: true } }
HIGHUnbounded command execution without input size limits
src/tools/PowerShellTool/PowerShellTool.tsx:1045
[AGENTS: Siege]dos
PowerShellTool executes shell commands without validating input size or rate limiting. An attacker can submit arbitrarily large commands or trigger resource-intensive operations that exhaust CPU/memory.
Suggested Fix
Add input size validation (e.g., max 10KB) and rate limiting on command execution. Implement timeout guards and output size limits.
HIGHMissing rate limiting on background task spawning
src/tools/PowerShellTool/PowerShellTool.tsx:1075
[AGENTS: Siege]dos
Background tasks can be spawned without rate limiting. An attacker could trigger many concurrent background tasks, exhausting system resources.
Suggested Fix
Implement rate limiting on background task creation (e.g., max N tasks per minute per user). Add queue management and backpressure.
HIGHShell Command Prefix Injection via CLAUDE CODE SHELL PREFIX
src/tools/PowerShellTool/PowerShellTool.tsx:1362
[AGENTS: Specter]injection
Shell command prefix injection possible through CLAUDE CODE SHELL PREFIX mechanism. User input can be prepended with malicious commands before execution.
Suggested Fix
Implement strict command parsing that rejects commands with suspicious prefixes or shell metacharacters before execution.
HIGHRemote skill fetch without cryptographic verification or provenance tracking
src/tools/SkillTool/SkillTool.ts:1056
[AGENTS: Supply]supply_chain
The executeRemoteSkill function loads skills from external URLs (AKI/GCS) without verifying cryptographic signatures or tracking provenance. Skills are fetched and injected directly into the conversation without any integrity verification, allowing potential supply chain attacks where malicious actors could inject harmful code into the skill repository.
Suggested Fix
Implement cryptographic signature verification for all remote skill downloads. Add provenance tracking metadata to each skill. Verify the skill source against a trusted registry before execution.
HIGHDangerously disable sandbox flag in tool schema
src/tools/TaskOutputTool/TaskOutputTool.tsx:452
[AGENTS: Prompt]llm_security
TaskOutputTool renders bash output with dangerouslyDisableSandbox: true, bypassing sandbox protections for user-controlled task output. This allows potentially malicious commands from background tasks to execute without isolation.
Suggested Fix
Remove dangerouslyDisableSandbox: true and ensure all bash output is properly sandboxed before rendering
HIGHUnbounded batch search operations without query complexity limits
src/tools/WebSearchTool/WebSearchTool.ts:185
[AGENTS: Wallet]denial_of_wallet
WebSearchTool processes multiple search queries in parallel via Promise.all without limiting total concurrent searches or total query count. Could be exploited to trigger massive parallel API calls.
Suggested Fix
Add concurrent search limits, enforce maximum total queries per session, and implement query complexity scoring to prevent abuse.
HIGHMissing URL scheme validation in preconnect
src/utils/apiPreconnect.ts:67
[AGENTS: Sentinel]input_validation
**Perspective 1:** The baseUrl is used directly in fetch() without validating it has a valid HTTP/HTTPS scheme. An attacker could supply a malformed URL that might be interpreted differently by different browsers or proxies. **Perspective 2:** The fetch request doesn't validate response content length, potentially allowing large response bodies to be consumed.
Suggested Fix
Validate baseUrl with URL() constructor and check scheme before use
HIGHPlugin auto-update without cryptographic verification
src/utils/backgroundHousekeeping.ts:1
[AGENTS: Supply]supply_chain
**Perspective 1:** The autoUpdateMarketplacesAndPluginsInBackground function updates plugins without cryptographic verification. This could allow supply chain attacks through compromised plugin updates. **Perspective 2:** The cleanupNpmCacheForAnthropicPackages function removes npm cache without verifying package integrity. This could allow poisoned packages to be restored in future sessions.
Suggested Fix
Add cryptographic signature verification for all plugin updates and require signed artifacts from trusted sources only.
HIGHDebug logging exposes internal state and environment details
src/utils/bash/ShellSnapshot.ts:325
[AGENTS: Recon]info_disclosure
Shell snapshot creation logs detailed error information including error codes, signals, working directory, Claude home directory, and full snapshot script content. This could reveal internal paths, environment configuration, and execution context to attackers who can trigger snapshot creation failures.
Suggested Fix
Remove or redact sensitive fields from debug logs: working directory, Claude home directory, and full script content. Only log generic error messages.
HIGHAWS credentials cached without proper rotation validation
src/utils/bedrock.ts:58
[AGENTS: Infiltrator]credential_exposure
AWS credentials are cached and reused without validation of their freshness or revocation status. The cachedCredentials are stored and used directly without checking if they've been rotated or revoked by the user.
Suggested Fix
Add credential rotation checks and invalidate cached credentials when user explicitly rotates them. Implement credential expiration tracking.
HIGHUnbounded buffer size with infinite maxBufferBytes default
src/utils/bufferedWriter.ts:16
[AGENTS: Siege]dos
createBufferedWriter() defaults maxBufferBytes to Infinity, allowing unlimited memory accumulation before flush. An attacker could trigger rapid writes that fill available memory, causing OOM conditions. The deferred flush mechanism compounds this by batching writes without size constraints.
Suggested Fix
Set maxBufferBytes to a reasonable limit (e.g., 10MB) and add rate limiting on write operations
HIGHFile system access via user-provided paths
src/utils/claudeDesktop.ts:49
[AGENTS: Infiltrator]file_system_access
Claude Desktop integration reads configuration files from user-provided paths without proper validation. The path resolution could access unintended files or directories.
HIGHNative host manifest installed without cryptographic verification
src/utils/claudeInChrome/setup.ts:156
[AGENTS: Supply]supply_chain
Chrome native host manifest is written to disk without verifying the manifest content's integrity or authenticity. The manifest contains allowed_origins and path fields that could be tampered with to redirect browser extension communication to malicious endpoints.
Suggested Fix
Add signature verification for native host manifests before installation. Implement manifest hash verification against a trusted source or code-sign the manifest generation process.
HIGHInsufficient audit log retention period for SOC 2 compliance
src/utils/cleanup.ts:12
[AGENTS: Compliance]data-retention
Default cleanup period is 30 days (DEFAULT_CLEANUP_PERIOD_DAYS = 30), but SOC 2 Type II requires audit logs to be retained for minimum 1 year. The cleanup function removes all logs including error logs and debug logs without distinguishing between compliance-critical audit trails and temporary debug data.
Suggested Fix
Implement separate retention policies: audit logs (minimum 1 year), debug logs (configurable, default 30 days), and temporary session data (configurable). Add configuration for minimum retention periods that cannot be reduced below regulatory requirements.

Summary

Consensus from 3672 reviewer(s): Razor, Chaos, Sentinel, Pedant, Syringe, Sanitizer, Vault, Gatekeeper, Blacklist, Specter, Passkey, Warden, Cipher, Siege, Entropy, Deadbolt, Compliance, Phantom, Gateway, Lockdown, Harbor, Tripwire, Supply, Trace, Infiltrator, Fuse, Vector, Provenance, Recon, Prompt, Wallet, Mirage, Weights, Exploit, Tenant, Egress, Razor, Sentinel, Specter, Pedant, Blacklist, Sanitizer, Syringe, Chaos, Gatekeeper, Vault, Deadbolt, Cipher, Compliance, Passkey, Warden, Phantom, Entropy, Gateway, Siege, Lockdown, Supply, Tripwire, Harbor, Trace, Fuse, Vector, Recon, Infiltrator, Provenance, Prompt, Weights, Wallet, Exploit, Mirage, Egress, Tenant, Razor, Specter, Pedant, Sentinel, Chaos, Syringe, Blacklist, Sanitizer, Vault, Gatekeeper, Deadbolt, Cipher, Passkey, Warden, Compliance, Phantom, Entropy, Lockdown, Siege, Gateway, Tripwire, Harbor, Trace, Fuse, Supply, Infiltrator, Recon, Vector, Provenance, Prompt, Wallet, Weights, Mirage, Exploit, Tenant, Egress, Chaos, Razor, Specter, Sentinel, Blacklist, Syringe, Pedant, Sanitizer, Vault, Gatekeeper, Warden, Cipher, Deadbolt, Passkey, Compliance, Phantom, Entropy, Siege, Gateway, Lockdown, Trace, Tripwire, Infiltrator, Supply, Fuse, Harbor, Recon, Vector, Prompt, Provenance, Mirage, Wallet, Tenant, Exploit, Weights, Egress, Razor, Chaos, Pedant, Sentinel, Specter, Blacklist, Gatekeeper, Syringe, Sanitizer, Vault, Deadbolt, Cipher, Passkey, Warden, Entropy, Compliance, Phantom, Lockdown, Gateway, Siege, Harbor, Trace, Tripwire, Supply, Infiltrator, Recon, Fuse, Vector, Provenance, Prompt, Mirage, Tenant, Exploit, Weights, Wallet, Egress, Razor, Chaos, Pedant, Specter, Sentinel, Syringe, Blacklist, Sanitizer, Gatekeeper, Vault, Deadbolt, Cipher, Compliance, Siege, Gateway, Passkey, Warden, Entropy, Lockdown, Phantom, Tripwire, Trace, Harbor, Supply, Infiltrator, Fuse, Recon, Vector, Prompt, Provenance, Wallet, Mirage, Exploit, Weights, Egress, Tenant, Pedant, Razor, Chaos, Specter, Sentinel, Blacklist, Syringe, Vault, Gatekeeper, Sanitizer, Passkey, Deadbolt, Warden, Compliance, Cipher, Phantom, Siege, Gateway, Lockdown, Entropy, Tripwire, Harbor, Trace, Supply, Recon, Vector, Fuse, Prompt, Provenance, Infiltrator, Wallet, Tenant, Weights, Egress, Exploit, Mirage, Razor, Pedant, Chaos, Specter, Blacklist, Sanitizer, Sentinel, Syringe, Vault, Gatekeeper, Passkey, Warden, Deadbolt, Compliance, Entropy, Phantom, Cipher, Siege, Lockdown, Gateway, Harbor, Trace, Supply, Tripwire, Infiltrator, Recon, Fuse, Vector, Provenance, Prompt, Wallet, Weights, Tenant, Exploit, Mirage, Egress, Razor, Sentinel, Pedant, Specter, Syringe, Chaos, Sanitizer, Vault, Gatekeeper, Blacklist, Deadbolt, Cipher, Warden, Passkey, Entropy, Compliance, Siege, Phantom, Lockdown, Gateway, Harbor, Trace, Supply, Tripwire, Recon, Fuse, Infiltrator, Provenance, Vector, Prompt, Wallet, Exploit, Mirage, Weights, Tenant, Egress, Razor, Specter, Pedant, Blacklist, Chaos, Sentinel, Vault, Syringe, Sanitizer, Gatekeeper, Deadbolt, Warden, Passkey, Cipher, Siege, Phantom, Entropy, Compliance, Lockdown, Gateway, Tripwire, Harbor, Supply, Trace, Infiltrator, Recon, Vector, Provenance, Fuse, Prompt, Wallet, Weights, Mirage, Exploit, Tenant, Egress, Razor, Pedant, Chaos, Sentinel, Specter, Syringe, Blacklist, Vault, Sanitizer, Gatekeeper, Passkey, Cipher, Warden, Compliance, Entropy, Deadbolt, Phantom, Siege, Lockdown, Gateway, Tripwire, Harbor, Trace, Supply, Fuse, Infiltrator, Recon, Provenance, Prompt, Vector, Wallet, Exploit, Weights, Tenant, Mirage, Egress, Sentinel, Razor, Chaos, Blacklist, Specter, Pedant, Syringe, Vault, Sanitizer, Gatekeeper, Deadbolt, Passkey, Compliance, Cipher, Warden, Entropy, Lockdown, Phantom, Siege, Gateway, Tripwire, Trace, Infiltrator, Fuse, Supply, Harbor, Vector, Recon, Prompt, Provenance, Wallet, Weights, Mirage, Exploit, Tenant, Egress, Specter, Pedant, Sentinel, Razor, Chaos, Sanitizer, Blacklist, Vault, Gatekeeper, Syringe, Deadbolt, Passkey, Cipher, Warden, Compliance, Entropy, Siege, Phantom, Lockdown, Gateway, Supply, Tripwire, Trace, Infiltrator, Harbor, Vector, Recon, Fuse, Provenance, Prompt, Wallet, Exploit, Weights, Mirage, Tenant, Egress, Razor, Chaos, Sanitizer, Pedant, Specter, Syringe, Vault, Gatekeeper, Sentinel, Blacklist, Deadbolt, Passkey, Compliance, Cipher, Warden, Siege, Phantom, Lockdown, Entropy, Gateway, Harbor, Tripwire, Trace, Infiltrator, Supply, Recon, Vector, Prompt, Provenance, Fuse, Mirage, Wallet, Tenant, Exploit, Egress, Weights, Chaos, Pedant, Razor, Sentinel, Syringe, Specter, Sanitizer, Gatekeeper, Vault, Blacklist, Passkey, Warden, Deadbolt, Cipher, Compliance, Entropy, Lockdown, Phantom, Siege, Gateway, Harbor, Trace, Supply, Infiltrator, Tripwire, Fuse, Provenance, Recon, Prompt, Vector, Wallet, Tenant, Egress, Mirage, Exploit, Weights, Chaos, Razor, Pedant, Sentinel, Specter, Vault, Syringe, Sanitizer, Blacklist, Gatekeeper, Warden, Passkey, Deadbolt, Compliance, Phantom, Cipher, Lockdown, Entropy, Siege, Gateway, Tripwire, Harbor, Supply, Trace, Infiltrator, Fuse, Recon, Vector, Prompt, Provenance, Wallet, Mirage, Weights, Exploit, Tenant, Egress, Razor, Chaos, Pedant, Specter, Sentinel, Syringe, Vault, Sanitizer, Gatekeeper, Blacklist, Deadbolt, Warden, Compliance, Passkey, Siege, Cipher, Entropy, Phantom, Lockdown, Gateway, Harbor, Trace, Infiltrator, Tripwire, Supply, Vector, Fuse, Recon, Prompt, Provenance, Wallet, Mirage, Tenant, Egress, Weights, Exploit, Chaos, Razor, Pedant, Sentinel, Specter, Blacklist, Vault, Sanitizer, Gatekeeper, Syringe, Deadbolt, Passkey, Cipher, Warden, Entropy, Siege, Phantom, Gateway, Lockdown, Compliance, Harbor, Tripwire, Trace, Supply, Infiltrator, Recon, Provenance, Fuse, Vector, Prompt, Weights, Mirage, Wallet, Exploit, Tenant, Egress, Pedant, Razor, Chaos, Sentinel, Syringe, Specter, Sanitizer, Blacklist, Gatekeeper, Vault, Deadbolt, Compliance, Passkey, Cipher, Warden, Entropy, Lockdown, Siege, Phantom, Gateway, Tripwire, Trace, Harbor, Supply, Infiltrator, Fuse, Vector, Recon, Prompt, Provenance, Mirage, Exploit, Weights, Wallet, Egress, Tenant, Razor, Chaos, Pedant, Sentinel, Blacklist, Specter, Sanitizer, Vault, Gatekeeper, Syringe, Passkey, Warden, Cipher, Deadbolt, Entropy, Phantom, Compliance, Siege, Gateway, Lockdown, Tripwire, Harbor, Trace, Supply, Infiltrator, Fuse, Recon, Vector, Prompt, Provenance, Weights, Wallet, Exploit, Tenant, Egress, Mirage, Razor, Pedant, Chaos, Specter, Blacklist, Sentinel, Syringe, Vault, Sanitizer, Gatekeeper, Passkey, Deadbolt, Entropy, Compliance, Warden, Cipher, Phantom, Lockdown, Siege, Gateway, Tripwire, Harbor, Trace, Infiltrator, Fuse, Supply, Vector, Recon, Prompt, Provenance, Wallet, Mirage, Weights, Exploit, Tenant, Egress, Pedant, Razor, Chaos, Syringe, Sanitizer, Blacklist, Specter, Gatekeeper, Vault, Sentinel, Entropy, Cipher, Compliance, Lockdown, Warden, Deadbolt, Gateway, Phantom, Siege, Passkey, Harbor, Supply, Trace, Recon, Tripwire, Vector, Fuse, Infiltrator, Provenance, Prompt, Exploit, Wallet, Weights, Mirage, Tenant, Egress, Pedant, Chaos, Sentinel, Specter, Blacklist, Razor, Syringe, Sanitizer, Vault, Gatekeeper, Passkey, Warden, Deadbolt, Cipher, Compliance, Phantom, Entropy, Gateway, Siege, Lockdown, Harbor, Tripwire, Infiltrator, Supply, Trace, Recon, Vector, Fuse, Provenance, Prompt, Weights, Exploit, Mirage, Tenant, Wallet, Egress, Pedant, Razor, Chaos, Blacklist, Sentinel, Syringe, Specter, Gatekeeper, Vault, Sanitizer, Passkey, Deadbolt, Warden, Entropy, Cipher, Compliance, Phantom, Gateway, Siege, Lockdown, Trace, Infiltrator, Harbor, Tripwire, Supply, Recon, Fuse, Provenance, Vector, Prompt, Wallet, Mirage, Weights, Tenant, Egress, Exploit, Pedant, Razor, Sentinel, Syringe, Blacklist, Sanitizer, Specter, Chaos, Gatekeeper, Vault, Cipher, Passkey, Deadbolt, Warden, Compliance, Entropy, Lockdown, Siege, Phantom, Gateway, Tripwire, Harbor, Trace, Supply, Fuse, Recon, Infiltrator, Vector, Provenance, Prompt, Wallet, Mirage, Exploit, Weights, Egress, Tenant, Pedant, Chaos, Razor, Blacklist, Specter, Sentinel, Syringe, Sanitizer, Gatekeeper, Vault, Warden, Compliance, Deadbolt, Passkey, Entropy, Cipher, Gateway, Lockdown, Phantom, Siege, Harbor, Trace, Tripwire, Supply, Recon, Infiltrator, Fuse, Vector, Prompt, Provenance, Mirage, Weights, Wallet, Exploit, Tenant, Egress, Pedant, Razor, Chaos, Sentinel, Specter, Syringe, Sanitizer, Vault, Gatekeeper, Blacklist, Compliance, Deadbolt, Entropy, Passkey, Cipher, Warden, Gateway, Phantom, Lockdown, Siege, Harbor, Supply, Tripwire, Infiltrator, Fuse, Trace, Recon, Vector, Provenance, Prompt, Weights, Mirage, Exploit, Wallet, Egress, Tenant, Pedant, Chaos, Specter, Razor, Sentinel, Sanitizer, Syringe, Blacklist, Vault, Gatekeeper, Warden, Cipher, Deadbolt, Compliance, Gateway, Siege, Lockdown, Passkey, Entropy, Phantom, Tripwire, Harbor, Fuse, Trace, Supply, Vector, Provenance, Recon, Prompt, Infiltrator, Weights, Exploit, Wallet, Mirage, Egress, Tenant, Razor, Pedant, Sentinel, Chaos, Specter, Blacklist, Gatekeeper, Vault, Sanitizer, Syringe, Deadbolt, Warden, Passkey, Entropy, Compliance, Cipher, Phantom, Siege, Gateway, Lockdown, Harbor, Tripwire, Trace, Supply, Recon, Vector, Infiltrator, Prompt, Provenance, Fuse, Weights, Exploit, Mirage, Egress, Wallet, Tenant, Razor, Pedant, Chaos, Specter, Sentinel, Blacklist, Vault, Sanitizer, Gatekeeper, Syringe, Passkey, Deadbolt, Cipher, Warden, Entropy, Phantom, Lockdown, Compliance, Gateway, Siege, Tripwire, Harbor, Trace, Infiltrator, Vector, Prompt, Supply, Fuse, Provenance, Recon, Wallet, Weights, Tenant, Mirage, Egress, Exploit, Pedant, Chaos, Specter, Sentinel, Sanitizer, Blacklist, Syringe, Razor, Vault, Gatekeeper, Passkey, Cipher, Deadbolt, Warden, Entropy, Phantom, Compliance, Lockdown, Siege, Gateway, Harbor, Trace, Fuse, Vector, Tripwire, Recon, Infiltrator, Supply, Prompt, Provenance, Wallet, Mirage, Weights, Tenant, Exploit, Egress, Pedant, Razor, Chaos, Sentinel, Specter, Syringe, Blacklist, Gatekeeper, Sanitizer, Vault, Cipher, Passkey, Compliance, Deadbolt, Warden, Entropy, Siege, Lockdown, Phantom, Gateway, Harbor, Trace, Tripwire, Supply, Infiltrator, Fuse, Recon, Provenance, Prompt, Vector, Wallet, Mirage, Egress, Tenant, Exploit, Weights, Chaos, Razor, Sentinel, Specter, Blacklist, Syringe, Pedant, Sanitizer, Vault, Gatekeeper, Passkey, Deadbolt, Cipher, Compliance, Warden, Entropy, Phantom, Lockdown, Siege, Gateway, Tripwire, Harbor, Supply, Infiltrator, Trace, Recon, Fuse, Provenance, Prompt, Vector, Wallet, Mirage, Weights, Exploit, Tenant, Egress, Chaos, Pedant, Razor, Blacklist, Specter, Vault, Sanitizer, Syringe, Gatekeeper, Sentinel, Passkey, Deadbolt, Cipher, Entropy, Phantom, Warden, Compliance, Siege, Lockdown, Gateway, Harbor, Trace, Tripwire, Infiltrator, Supply, Fuse, Vector, Prompt, Recon, Provenance, Weights, Wallet, Mirage, Tenant, Exploit, Egress, Razor, Pedant, Chaos, Blacklist, Sanitizer, Vault, Sentinel, Specter, Syringe, Gatekeeper, Deadbolt, Warden, Cipher, Passkey, Compliance, Lockdown, Entropy, Phantom, Gateway, Siege, Harbor, Tripwire, Fuse, Trace, Provenance, Vector, Recon, Infiltrator, Prompt, Supply, Wallet, Weights, Mirage, Tenant, Exploit, Egress, Razor, Pedant, Chaos, Sentinel, Vault, Syringe, Blacklist, Specter, Sanitizer, Gatekeeper, Passkey, Deadbolt, Cipher, Warden, Compliance, Phantom, Gateway, Entropy, Lockdown, Siege, Trace, Supply, Harbor, Vector, Infiltrator, Tripwire, Recon, Fuse, Provenance, Prompt, Wallet, Exploit, Weights, Egress, Tenant, Mirage, Pedant, Razor, Specter, Sentinel, Chaos, Syringe, Sanitizer, Vault, Blacklist, Gatekeeper, Cipher, Deadbolt, Passkey, Warden, Compliance, Lockdown, Phantom, Gateway, Siege, Entropy, Harbor, Infiltrator, Trace, Recon, Fuse, Vector, Supply, Tripwire, Prompt, Provenance, Mirage, Weights, Exploit, Tenant, Wallet, Egress, Chaos, Pedant, Razor, Sentinel, Blacklist, Vault, Gatekeeper, Sanitizer, Specter, Syringe, Deadbolt, Phantom, Cipher, Warden, Lockdown, Entropy, Compliance, Siege, Passkey, Gateway, Harbor, Tripwire, Fuse, Infiltrator, Trace, Recon, Vector, Supply, Prompt, Provenance, Wallet, Weights, Exploit, Mirage, Egress, Tenant, Pedant, Razor, Specter, Chaos, Sentinel, Syringe, Blacklist, Sanitizer, Vault, Gatekeeper, Passkey, Compliance, Deadbolt, Warden, Entropy, Phantom, Cipher, Siege, Lockdown, Gateway, Tripwire, Harbor, Trace, Supply, Vector, Infiltrator, Recon, Fuse, Provenance, Prompt, Mirage, Wallet, Tenant, Exploit, Egress, Weights, Razor, Sentinel, Chaos, Pedant, Specter, Sanitizer, Blacklist, Syringe, Vault, Gatekeeper, Cipher, Warden, Deadbolt, Passkey, Compliance, Gateway, Siege, Entropy, Phantom, Lockdown, Trace, Tripwire, Infiltrator, Vector, Harbor, Fuse, Recon, Supply, Prompt, Provenance, Wallet, Mirage, Tenant, Weights, Exploit, Egress, Chaos, Pedant, Sentinel, Blacklist, Specter, Syringe, Razor, Vault, Gatekeeper, Sanitizer, Passkey, Warden, Deadbolt, Lockdown, Cipher, Entropy, Phantom, Siege, Compliance, Gateway, Tripwire, Harbor, Trace, Infiltrator, Supply, Recon, Fuse, Provenance, Vector, Prompt, Mirage, Wallet, Exploit, Weights, Egress, Tenant, Pedant, Razor, Sentinel, Chaos, Sanitizer, Gatekeeper, Blacklist, Vault, Specter, Syringe, Deadbolt, Cipher, Passkey, Compliance, Warden, Phantom, Entropy, Lockdown, Siege, Gateway, Tripwire, Trace, Infiltrator, Fuse, Harbor, Supply, Recon, Provenance, Vector, Prompt, Wallet, Mirage, Weights, Tenant, Egress, Exploit, Pedant, Razor, Chaos, Specter, Blacklist, Sanitizer, Sentinel, Vault, Gatekeeper, Syringe, Deadbolt, Passkey, Warden, Compliance, Entropy, Cipher, Siege, Lockdown, Gateway, Phantom, Tripwire, Harbor, Trace, Supply, Infiltrator, Provenance, Fuse, Recon, Prompt, Vector, Mirage, Weights, Wallet, Tenant, Exploit, Egress, Specter, Razor, Syringe, Blacklist, Vault, Chaos, Sanitizer, Gatekeeper, Pedant, Sentinel, Warden, Phantom, Compliance, Lockdown, Siege, Gateway, Passkey, Deadbolt, Entropy, Cipher, Tripwire, Trace, Supply, Harbor, Fuse, Infiltrator, Vector, Prompt, Recon, Provenance, Mirage, Wallet, Weights, Exploit, Tenant, Egress, Razor, Chaos, Sentinel, Pedant, Specter, Syringe, Vault, Gatekeeper, Sanitizer, Blacklist, Passkey, Entropy, Warden, Cipher, Deadbolt, Gateway, Phantom, Compliance, Siege, Lockdown, Tripwire, Harbor, Fuse, Infiltrator, Trace, Provenance, Supply, Prompt, Vector, Recon, Weights, Wallet, Exploit, Egress, Mirage, Tenant, Pedant, Razor, Chaos, Specter, Sentinel, Blacklist, Sanitizer, Syringe, Gatekeeper, Vault, Passkey, Deadbolt, Cipher, Entropy, Phantom, Compliance, Warden, Lockdown, Siege, Gateway, Trace, Harbor, Supply, Infiltrator, Tripwire, Recon, Provenance, Fuse, Prompt, Vector, Mirage, Exploit, Weights, Egress, Tenant, Wallet, Razor, Chaos, Specter, Pedant, Sentinel, Vault, Syringe, Sanitizer, Blacklist, Gatekeeper, Deadbolt, Warden, Cipher, Compliance, Siege, Lockdown, Phantom, Passkey, Gateway, Entropy, Harbor, Trace, Tripwire, Vector, Recon, Fuse, Prompt, Infiltrator, Provenance, Supply, Wallet, Mirage, Exploit, Weights, Tenant, Egress, Razor, Blacklist, Sentinel, Specter, Sanitizer, Gatekeeper, Pedant, Vault, Chaos, Syringe, Warden, Deadbolt, Cipher, Passkey, Compliance, Lockdown, Phantom, Siege, Gateway, Entropy, Harbor, Tripwire, Supply, Infiltrator, Fuse, Recon, Trace, Vector, Provenance, Prompt, Wallet, Mirage, Exploit, Weights, Tenant, Egress, Chaos, Razor, Pedant, Sentinel, Syringe, Sanitizer, Specter, Blacklist, Vault, Gatekeeper, Cipher, Compliance, Deadbolt, Warden, Passkey, Phantom, Entropy, Siege, Gateway, Lockdown, Trace, Harbor, Supply, Infiltrator, Tripwire, Fuse, Recon, Vector, Provenance, Prompt, Weights, Exploit, Tenant, Mirage, Wallet, Egress, Razor, Chaos, Pedant, Specter, Syringe, Sanitizer, Vault, Blacklist, Gatekeeper, Sentinel, Deadbolt, Cipher, Passkey, Compliance, Warden, Phantom, Gateway, Lockdown, Siege, Entropy, Harbor, Trace, Supply, Infiltrator, Tripwire, Recon, Vector, Prompt, Provenance, Fuse, Mirage, Weights, Wallet, Tenant, Exploit, Egress, Razor, Pedant, Chaos, Sentinel, Blacklist, Specter, Vault, Gatekeeper, Syringe, Sanitizer, Cipher, Deadbolt, Passkey, Warden, Entropy, Compliance, Siege, Phantom, Lockdown, Gateway, Harbor, Trace, Supply, Infiltrator, Tripwire, Recon, Fuse, Provenance, Vector, Prompt, Wallet, Exploit, Mirage, Egress, Tenant, Weights, Razor, Pedant, Specter, Sentinel, Chaos, Blacklist, Vault, Syringe, Gatekeeper, Sanitizer, Warden, Passkey, Deadbolt, Cipher, Compliance, Entropy, Phantom, Gateway, Lockdown, Siege, Tripwire, Harbor, Supply, Trace, Fuse, Infiltrator, Provenance, Vector, Recon, Prompt, Wallet, Exploit, Mirage, Weights, Egress, Tenant, Razor, Chaos, Specter, Sentinel, Pedant, Syringe, Sanitizer, Vault, Blacklist, Gatekeeper, Cipher, Compliance, Passkey, Deadbolt, Phantom, Lockdown, Warden, Gateway, Entropy, Siege, Trace, Harbor, Fuse, Tripwire, Vector, Recon, Supply, Infiltrator, Prompt, Provenance, Wallet, Weights, Tenant, Egress, Exploit, Mirage, Razor, Chaos, Pedant, Sentinel, Blacklist, Specter, Syringe, Vault, Gatekeeper, Sanitizer, Passkey, Deadbolt, Entropy, Cipher, Siege, Lockdown, Phantom, Gateway, Warden, Compliance, Tripwire, Harbor, Supply, Infiltrator, Recon, Vector, Provenance, Prompt, Trace, Fuse, Mirage, Wallet, Egress, Exploit, Weights, Tenant, Razor, Pedant, Sentinel, Specter, Gatekeeper, Sanitizer, Vault, Blacklist, Syringe, Chaos, Deadbolt, Cipher, Warden, Phantom, Lockdown, Entropy, Passkey, Siege, Compliance, Gateway, Trace, Tripwire, Harbor, Fuse, Supply, Provenance, Recon, Infiltrator, Vector, Prompt, Mirage, Tenant, Egress, Weights, Wallet, Exploit, Razor, Specter, Syringe, Chaos, Sentinel, Blacklist, Pedant, Gatekeeper, Vault, Sanitizer, Cipher, Siege, Deadbolt, Entropy, Lockdown, Phantom, Passkey, Gateway, Warden, Compliance, Tripwire, Harbor, Trace, Infiltrator, Fuse, Supply, Recon, Vector, Provenance, Prompt, Wallet, Mirage, Egress, Weights, Exploit, Tenant, Pedant, Sentinel, Chaos, Razor, Specter, Syringe, Sanitizer, Gatekeeper, Vault, Blacklist, Deadbolt, Warden, Passkey, Compliance, Entropy, Cipher, Phantom, Lockdown, Gateway, Siege, Harbor, Tripwire, Trace, Fuse, Supply, Prompt, Vector, Infiltrator, Recon, Provenance, Mirage, Weights, Exploit, Wallet, Egress, Tenant, Razor, Pedant, Chaos, Sentinel, Specter, Blacklist, Sanitizer, Vault, Syringe, Gatekeeper, Passkey, Deadbolt, Cipher, Warden, Entropy, Phantom, Siege, Compliance, Lockdown, Gateway, Tripwire, Harbor, Infiltrator, Fuse, Supply, Recon, Vector, Trace, Prompt, Provenance, Wallet, Weights, Mirage, Tenant, Exploit, Egress, Razor, Pedant, Chaos, Sentinel, Sanitizer, Blacklist, Specter, Syringe, Gatekeeper, Vault, Deadbolt, Cipher, Passkey, Warden, Phantom, Siege, Entropy, Lockdown, Compliance, Gateway, Tripwire, Trace, Harbor, Recon, Provenance, Fuse, Prompt, Infiltrator, Supply, Vector, Wallet, Mirage, Tenant, Egress, Exploit, Weights, Pedant, Chaos, Syringe, Specter, Vault, Sentinel, Sanitizer, Razor, Blacklist, Gatekeeper, Compliance, Cipher, Deadbolt, Warden, Passkey, Phantom, Siege, Entropy, Gateway, Lockdown, Harbor, Tripwire, Supply, Trace, Infiltrator, Provenance, Recon, Prompt, Fuse, Vector, Mirage, Weights, Exploit, Wallet, Egress, Tenant, Pedant, Razor, Syringe, Chaos, Gatekeeper, Sanitizer, Sentinel, Vault, Blacklist, Specter, Warden, Passkey, Entropy, Deadbolt, Compliance, Siege, Phantom, Gateway, Lockdown, Cipher, Fuse, Infiltrator, Tripwire, Harbor, Supply, Provenance, Trace, Vector, Prompt, Recon, Wallet, Tenant, Mirage, Exploit, Egress, Weights, Chaos, Razor, Pedant, Sentinel, Specter, Syringe, Vault, Blacklist, Sanitizer, Gatekeeper, Deadbolt, Passkey, Warden, Cipher, Compliance, Entropy, Phantom, Lockdown, Siege, Gateway, Harbor, Trace, Infiltrator, Supply, Recon, Tripwire, Vector, Provenance, Fuse, Prompt, Mirage, Wallet, Tenant, Egress, Exploit, Weights, Razor, Pedant, Blacklist, Chaos, Sentinel, Syringe, Specter, Gatekeeper, Vault, Sanitizer, Deadbolt, Warden, Compliance, Cipher, Entropy, Passkey, Siege, Lockdown, Phantom, Gateway, Supply, Trace, Infiltrator, Harbor, Recon, Fuse, Tripwire, Vector, Prompt, Provenance, Mirage, Wallet, Tenant, Weights, Exploit, Egress, Razor, Pedant, Sentinel, Syringe, Blacklist, Gatekeeper, Vault, Sanitizer, Specter, Chaos, Cipher, Passkey, Entropy, Deadbolt, Warden, Lockdown, Siege, Compliance, Phantom, Gateway, Harbor, Tripwire, Supply, Trace, Fuse, Infiltrator, Prompt, Provenance, Recon, Vector, Wallet, Mirage, Weights, Exploit, Tenant, Egress, Chaos, Pedant, Sentinel, Blacklist, Razor, Specter, Gatekeeper, Syringe, Sanitizer, Vault, Deadbolt, Warden, Entropy, Gateway, Compliance, Cipher, Siege, Phantom, Lockdown, Passkey, Harbor, Supply, Tripwire, Vector, Trace, Provenance, Prompt, Infiltrator, Fuse, Recon, Wallet, Weights, Exploit, Tenant, Egress, Mirage, Pedant, Specter, Syringe, Sentinel, Blacklist, Razor, Sanitizer, Vault, Gatekeeper, Chaos, Passkey, Deadbolt, Warden, Phantom, Cipher, Compliance, Entropy, Siege, Gateway, Lockdown, Trace, Harbor, Supply, Tripwire, Infiltrator, Provenance, Vector, Prompt, Recon, Fuse, Wallet, Weights, Exploit, Tenant, Egress, Mirage, Pedant, Razor, Sentinel, Syringe, Specter, Chaos, Vault, Blacklist, Sanitizer, Gatekeeper, Cipher, Passkey, Deadbolt, Entropy, Warden, Compliance, Lockdown, Siege, Phantom, Gateway, Tripwire, Harbor, Trace, Infiltrator, Supply, Vector, Provenance, Fuse, Recon, Prompt, Wallet, Exploit, Weights, Egress, Tenant, Mirage, Pedant, Razor, Specter, Sanitizer, Chaos, Gatekeeper, Blacklist, Sentinel, Syringe, Vault, Deadbolt, Cipher, Passkey, Compliance, Warden, Phantom, Siege, Entropy, Lockdown, Gateway, Harbor, Tripwire, Supply, Infiltrator, Trace, Fuse, Provenance, Vector, Prompt, Recon, Mirage, Wallet, Exploit, Tenant, Weights, Egress, Pedant, Chaos, Razor, Blacklist, Syringe, Gatekeeper, Sentinel, Sanitizer, Vault, Specter, Cipher, Passkey, Compliance, Phantom, Warden, Siege, Deadbolt, Lockdown, Entropy, Gateway, Tripwire, Trace, Infiltrator, Harbor, Fuse, Recon, Vector, Prompt, Supply, Provenance, Wallet, Mirage, Weights, Exploit, Tenant, Egress, Pedant, Razor, Chaos, Vault, Sentinel, Blacklist, Syringe, Sanitizer, Gatekeeper, Specter, Warden, Passkey, Compliance, Siege, Entropy, Cipher, Phantom, Gateway, Lockdown, Deadbolt, Harbor, Tripwire, Trace, Supply, Fuse, Vector, Infiltrator, Recon, Provenance, Prompt, Wallet, Weights, Exploit, Mirage, Tenant, Egress, Blacklist, Razor, Chaos, Pedant, Syringe, Specter, Gatekeeper, Sanitizer, Vault, Sentinel, Deadbolt, Passkey, Cipher, Warden, Phantom, Compliance, Gateway, Siege, Entropy, Lockdown, Tripwire, Harbor, Trace, Infiltrator, Supply, Provenance, Fuse, Prompt, Vector, Recon, Mirage, Weights, Exploit, Wallet, Egress, Tenant, Razor, Pedant, Chaos, Sentinel, Specter, Blacklist, Syringe, Sanitizer, Vault, Gatekeeper, Gateway, Passkey, Deadbolt, Siege, Entropy, Lockdown, Phantom, Compliance, Cipher, Warden, Tripwire, Harbor, Trace, Supply, Infiltrator, Fuse, Prompt, Provenance, Vector, Recon, Wallet, Mirage, Weights, Tenant, Exploit, Egress, Razor, Blacklist, Chaos, Syringe, Specter, Sanitizer, Pedant, Vault, Gatekeeper, Sentinel, Passkey, Cipher, Warden, Deadbolt, Phantom, Entropy, Siege, Lockdown, Gateway, Compliance, Harbor, Trace, Tripwire, Infiltrator, Supply, Fuse, Provenance, Recon, Prompt, Vector, Mirage, Wallet, Weights, Egress, Tenant, Exploit, Razor, Blacklist, Gatekeeper, Sentinel, Chaos, Vault, Pedant, Sanitizer, Specter, Syringe, Cipher, Passkey, Compliance, Warden, Deadbolt, Phantom, Lockdown, Gateway, Siege, Entropy, Tripwire, Trace, Harbor, Supply, Infiltrator, Fuse, Provenance, Vector, Prompt, Recon, Mirage, Wallet, Tenant, Weights, Exploit, Egress, Razor, Sentinel, Specter, Pedant, Chaos, Blacklist, Gatekeeper, Vault, Sanitizer, Syringe, Warden, Cipher, Passkey, Deadbolt, Phantom, Compliance, Lockdown, Gateway, Siege, Entropy, Harbor, Tripwire, Trace, Recon, Prompt, Vector, Provenance, Fuse, Supply, Infiltrator, Mirage, Wallet, Weights, Tenant, Egress, Exploit, Pedant, Razor, Chaos, Sentinel, Gatekeeper, Sanitizer, Blacklist, Vault, Specter, Syringe, Entropy, Passkey, Cipher, Warden, Deadbolt, Siege, Phantom, Gateway, Lockdown, Compliance, Tripwire, Harbor, Supply, Infiltrator, Recon, Vector, Trace, Prompt, Provenance, Fuse, Wallet, Weights, Exploit, Egress, Tenant, Mirage, Specter, Chaos, Blacklist, Sentinel, Razor, Gatekeeper, Vault, Sanitizer, Syringe, Pedant, Passkey, Warden, Entropy, Phantom, Compliance, Deadbolt, Gateway, Cipher, Siege, Lockdown, Tripwire, Trace, Infiltrator, Recon, Fuse, Harbor, Supply, Provenance, Vector, Prompt, Weights, Exploit, Tenant, Mirage, Wallet, Egress, Pedant, Razor, Chaos, Sentinel, Sanitizer, Vault, Blacklist, Gatekeeper, Syringe, Specter, Passkey, Cipher, Warden, Deadbolt, Compliance, Siege, Lockdown, Gateway, Entropy, Phantom, Tripwire, Harbor, Trace, Infiltrator, Supply, Recon, Provenance, Vector, Prompt, Fuse, Mirage, Exploit, Weights, Tenant, Wallet, Egress, Sentinel, Razor, Syringe, Pedant, Sanitizer, Gatekeeper, Chaos, Vault, Specter, Blacklist, Passkey, Deadbolt, Entropy, Warden, Compliance, Cipher, Phantom, Siege, Gateway, Lockdown, Trace, Tripwire, Harbor, Infiltrator, Supply, Fuse, Provenance, Vector, Recon, Prompt, Wallet, Mirage, Tenant, Exploit, Weights, Egress, Razor, Pedant, Sentinel, Specter, Vault, Blacklist, Gatekeeper, Chaos, Sanitizer, Syringe, Passkey, Compliance, Cipher, Deadbolt, Warden, Phantom, Siege, Gateway, Lockdown, Entropy, Trace, Harbor, Fuse, Supply, Infiltrator, Tripwire, Prompt, Vector, Provenance, Recon, Wallet, Weights, Mirage, Exploit, Tenant, Egress, Chaos, Razor, Blacklist, Sanitizer, Pedant, Vault, Gatekeeper, Syringe, Specter, Sentinel, Warden, Cipher, Deadbolt, Phantom, Passkey, Entropy, Lockdown, Gateway, Compliance, Siege, Trace, Supply, Infiltrator, Vector, Tripwire, Fuse, Harbor, Prompt, Recon, Provenance, Wallet, Mirage, Tenant, Exploit, Egress, Weights, Specter, Pedant, Syringe, Blacklist, Sanitizer, Sentinel, Vault, Gatekeeper, Chaos, Razor, Deadbolt, Warden, Cipher, Compliance, Phantom, Entropy, Passkey, Siege, Lockdown, Gateway, Tripwire, Recon, Trace, Fuse, Vector, Infiltrator, Harbor, Provenance, Prompt, Supply, Wallet, Weights, Exploit, Tenant, Egress, Mirage, Razor, Pedant, Chaos, Specter, Syringe, Blacklist, Sanitizer, Sentinel, Gatekeeper, Vault, Cipher, Deadbolt, Entropy, Passkey, Compliance, Warden, Lockdown, Phantom, Gateway, Siege, Trace, Tripwire, Fuse, Provenance, Supply, Harbor, Recon, Vector, Prompt, Infiltrator, Wallet, Mirage, Weights, Exploit, Tenant, Egress, Pedant, Razor, Sentinel, Chaos, Syringe, Gatekeeper, Blacklist, Vault, Sanitizer, Specter, Compliance, Siege, Entropy, Cipher, Phantom, Gateway, Warden, Deadbolt, Passkey, Lockdown, Infiltrator, Harbor, Trace, Tripwire, Recon, Vector, Prompt, Provenance, Fuse, Supply, Mirage, Wallet, Weights, Exploit, Egress, Tenant, Razor, Pedant, Specter, Syringe, Sanitizer, Gatekeeper, Chaos, Vault, Blacklist, Sentinel, Passkey, Cipher, Deadbolt, Warden, Compliance, Entropy, Lockdown, Gateway, Siege, Phantom, Tripwire, Harbor, Trace, Supply, Infiltrator, Fuse, Prompt, Provenance, Recon, Vector, Wallet, Weights, Mirage, Exploit, Egress, Tenant, Pedant, Razor, Chaos, Specter, Vault, Sanitizer, Blacklist, Gatekeeper, Sentinel, Syringe, Deadbolt, Entropy, Passkey, Compliance, Cipher, Phantom, Siege, Gateway, Lockdown, Warden, Trace, Harbor, Tripwire, Infiltrator, Provenance, Fuse, Vector, Recon, Prompt, Supply, Mirage, Exploit, Weights, Wallet, Tenant, Egress, Specter, Razor, Blacklist, Pedant, Sentinel, Sanitizer, Chaos, Syringe, Vault, Gatekeeper, Cipher, Warden, Deadbolt, Passkey, Entropy, Compliance, Lockdown, Siege, Phantom, Gateway, Trace, Harbor, Infiltrator, Tripwire, Vector, Recon, Fuse, Provenance, Supply, Prompt, Mirage, Weights, Tenant, Exploit, Wallet, Egress, Chaos, Sentinel, Pedant, Specter, Blacklist, Syringe, Razor, Sanitizer, Gatekeeper, Vault, Entropy, Compliance, Phantom, Warden, Gateway, Lockdown, Siege, Cipher, Deadbolt, Passkey, Harbor, Trace, Tripwire, Infiltrator, Vector, Supply, Provenance, Recon, Fuse, Prompt, Mirage, Wallet, Egress, Weights, Exploit, Tenant, Razor, Pedant, Chaos, Syringe, Blacklist, Specter, Vault, Sentinel, Sanitizer, Gatekeeper, Deadbolt, Compliance, Warden, Siege, Entropy, Passkey, Cipher, Gateway, Lockdown, Phantom, Harbor, Trace, Supply, Tripwire, Infiltrator, Vector, Fuse, Provenance, Prompt, Recon, Wallet, Mirage, Egress, Tenant, Weights, Exploit, Pedant, Sentinel, Blacklist, Chaos, Syringe, Specter, Sanitizer, Razor, Vault, Gatekeeper, Passkey, Deadbolt, Warden, Siege, Phantom, Lockdown, Cipher, Entropy, Compliance, Gateway, Harbor, Tripwire, Supply, Infiltrator, Trace, Vector, Provenance, Recon, Prompt, Fuse, Weights, Exploit, Egress, Mirage, Wallet, Tenant, Razor, Sentinel, Syringe, Specter, Gatekeeper, Blacklist, Pedant, Vault, Sanitizer, Chaos, Passkey, Cipher, Compliance, Entropy, Deadbolt, Lockdown, Warden, Siege, Phantom, Gateway, Trace, Supply, Infiltrator, Fuse, Recon, Prompt, Tripwire, Provenance, Vector, Harbor, Wallet, Exploit, Weights, Egress, Tenant, Mirage, Pedant, Chaos, Specter, Blacklist, Sentinel, Razor, Gatekeeper, Sanitizer, Syringe, Vault, Deadbolt, Compliance, Warden, Phantom, Gateway, Entropy, Lockdown, Cipher, Passkey, Siege, Harbor, Trace, Infiltrator, Supply, Vector, Tripwire, Fuse, Prompt, Provenance, Recon, Tenant, Mirage, Wallet, Weights, Egress, Exploit, Razor, Chaos, Pedant, Blacklist, Specter, Syringe, Sanitizer, Gatekeeper, Vault, Sentinel, Passkey, Entropy, Deadbolt, Cipher, Lockdown, Siege, Compliance, Gateway, Warden, Phantom, Tripwire, Infiltrator, Harbor, Fuse, Trace, Recon, Vector, Supply, Provenance, Prompt, Wallet, Mirage, Exploit, Weights, Egress, Tenant, Sentinel, Chaos, Syringe, Sanitizer, Vault, Razor, Blacklist, Pedant, Specter, Gatekeeper, Deadbolt, Passkey, Cipher, Warden, Entropy, Siege, Compliance, Gateway, Lockdown, Phantom, Tripwire, Trace, Supply, Harbor, Infiltrator, Vector, Fuse, Prompt, Recon, Provenance, Wallet, Mirage, Tenant, Weights, Egress, Exploit, Razor, Pedant, Sentinel, Chaos, Specter, Syringe, Gatekeeper, Sanitizer, Blacklist, Vault, Passkey, Warden, Deadbolt, Cipher, Phantom, Siege, Compliance, Gateway, Lockdown, Entropy, Tripwire, Supply, Harbor, Infiltrator, Fuse, Recon, Prompt, Provenance, Trace, Vector, Weights, Mirage, Wallet, Exploit, Egress, Tenant, Pedant, Razor, Sentinel, Blacklist, Syringe, Specter, Vault, Gatekeeper, Chaos, Sanitizer, Passkey, Cipher, Deadbolt, Entropy, Phantom, Compliance, Warden, Gateway, Lockdown, Siege, Harbor, Tripwire, Trace, Supply, Infiltrator, Recon, Provenance, Prompt, Vector, Fuse, Weights, Mirage, Wallet, Exploit, Tenant, Egress, Pedant, Razor, Chaos, Sentinel, Specter, Vault, Syringe, Gatekeeper, Sanitizer, Blacklist, Passkey, Compliance, Entropy, Deadbolt, Warden, Siege, Phantom, Gateway, Cipher, Lockdown, Harbor, Tripwire, Recon, Provenance, Trace, Vector, Supply, Prompt, Infiltrator, Fuse, Wallet, Tenant, Mirage, Weights, Exploit, Egress, Sentinel, Pedant, Chaos, Razor, Specter, Syringe, Sanitizer, Blacklist, Gatekeeper, Vault, Deadbolt, Passkey, Cipher, Warden, Compliance, Entropy, Phantom, Lockdown, Siege, Gateway, Tripwire, Harbor, Supply, Trace, Infiltrator, Fuse, Vector, Prompt, Recon, Provenance, Mirage, Wallet, Weights, Exploit, Egress, Tenant, Razor, Specter, Sanitizer, Vault, Sentinel, Blacklist, Gatekeeper, Chaos, Pedant, Syringe, Passkey, Cipher, Warden, Deadbolt, Phantom, Lockdown, Siege, Compliance, Entropy, Gateway, Supply, Harbor, Infiltrator, Provenance, Prompt, Tripwire, Vector, Fuse, Trace, Recon, Wallet, Mirage, Weights, Egress, Tenant, Exploit, Pedant, Chaos, Razor, Specter, Sentinel, Blacklist, Gatekeeper, Sanitizer, Syringe, Vault, Cipher, Deadbolt, Passkey, Phantom, Entropy, Warden, Gateway, Lockdown, Compliance, Siege, Harbor, Trace, Tripwire, Infiltrator, Fuse, Supply, Recon, Vector, Prompt, Provenance, Exploit, Tenant, Weights, Egress, Wallet, Mirage, Chaos, Sentinel, Razor, Pedant, Specter, Vault, Gatekeeper, Blacklist, Sanitizer, Syringe, Passkey, Deadbolt, Cipher, Entropy, Siege, Compliance, Phantom, Gateway, Lockdown, Warden, Trace, Tripwire, Harbor, Supply, Recon, Fuse, Provenance, Infiltrator, Prompt, Vector, Wallet, Exploit, Tenant, Mirage, Weights, Egress, Razor, Sentinel, Specter, Blacklist, Chaos, Gatekeeper, Sanitizer, Pedant, Syringe, Vault, Passkey, Cipher, Entropy, Deadbolt, Warden, Phantom, Siege, Lockdown, Gateway, Compliance, Harbor, Tripwire, Trace, Supply, Infiltrator, Recon, Provenance, Prompt, Fuse, Vector, Weights, Exploit, Mirage, Egress, Wallet, Tenant Total findings: 1011 Severity breakdown: 43 critical, 222 high, 636 medium, 110 low

Note: Fixing issues can create a domino effect — resolving one finding often surfaces new ones that were previously hidden. Multiple scan-and-fix cycles may be needed until you’re satisfied no further issues remain. How deep you go is your call.