MCP Scanner
ScanLeaderboardDocsSign in
Home/SalesforceAIResearch/enterprise-deep-research/Results
0F

enterprise-deep-research

SalesforceAIResearch/enterprise-deep-research

96 files · 285 findings

Share GitHub SARIF JSON
13 critical127 high27 medium118 low
Tool Poisoning2 issues
Command Injection3 issues
Path Traversal6 issues
SSRF10 issues
Credential Theft2 issues
Excessive Permissionsclean
Missing Auth12 issues
Logging Deficiency129

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/App.js:39
console.log('Database info passed to research agent:', databaseInfo);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

SSRF10

Request to localhost or loopback address

high

Requests targeting 127.0.0.1, localhost, or [::1] may access internal services not intended to be exposed.

ai-research-assistant/src/components/DatabaseUpload.js:17
return isDevelopment ? 'http://localhost:8000' : '';
How to fix

Block requests to localhost and loopback addresses. Implement URL validation that rejects 127.x.x.x and ::1.

Tool Poisoning2

Cross-tool shadowing of system commands

high

Tool names mimicking built-in system tools (e.g., 'bash', 'shell', 'terminal') can trick the LLM into routing actions to a malicious handler.

app.py:124
"/", StaticFiles(directory="ai-research-assistant/build", html=True), name="root"
How to fix

Rename the tool to avoid colliding with system commands (bash, shell, exec, etc.).

Missing Auth12

Missing rate limiting on endpoint

medium

API endpoints without rate limiting are vulnerable to brute force and denial of service.

app.py:128
@app.get("/")
How to fix

Add rate limiting middleware to all public API endpoints.

Missing rate limiting on endpoint

Path Traversal6

path.join/resolve with user-controlled input

high

Using path.join or path.resolve with variables from user input without validation can lead to directory traversal.

benchmarks/process_deepconsult.py:220
output_file = os.path.join(args.output_dir, output_filename)
How to fix

Sanitize user input before passing to path.join/resolve. Use path.normalize() and check for '..' sequences.

Runtime Tool Poisoning62

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

benchmarks/run_research.py:287
result = await fresh_graph.ainvoke(initial_state, config=graph_config)
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Credential Theft2

Hardcoded API key or token literal

critical

String literals matching known API key prefixes (sk-, ghp_, AKIA, xoxb-, etc.) or long base64-like strings may expose secrets in source code.

math_client.py:20
OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY", "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")
How to fix

Remove hardcoded secrets from source code. Use environment variables or a secrets manager.

Command Injection3

Python subprocess with shell=True

critical

subprocess calls with shell=True execute commands through the shell, enabling injection attacks.

src/tools/examples/list_mcp_servers.py:152
result = subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=5)  # Added 5 second timeout
How to fix

Set shell=False in subprocess calls and pass command as a list.

Data Exfiltration55

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/playwright_example.py:60
# Take a screenshot after navigating (using PDF as workaround)
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Excessive Data Exposure4

Returning entire database records without field filtering

medium

Detected SELECT * or ORM queries without explicit field selection. Returning all columns risks exposing sensitive fields (passwords, tokens, internal IDs) to the client or LLM context.

src/tools/text2sql_tool.py:141
cursor.execute(f"SELECT * FROM {table} LIMIT 3")
How to fix

Always specify the exact columns or fields to return. Use SELECT with explicit column names or ORM select/projection options.

Supply Chain
clean
Rug Pullclean
Data Exfiltration55 issues
Insecure Communicationclean
Excessive Data Exposure4 issues
Logging Deficiency129 issues
Runtime Tool Poisoning62 issues
Shadow MCP Serverclean

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/App.js:89
console.log('Stopping research from App.js');
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/components/DetailsPanel.js:145
console.log('[DetailsPanel - renderWebLinks] Received links:', links);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/components/DetailsPanel.js:203
console.log('[DetailsPanel - renderWebLinks] Generated HTML for web links (first 300 chars):', generatedHtml.substring(0, 300) + '...');
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/components/DetailsPanel.js:252
console.log('[DetailsPanel - generateEnhancedDetailsHtml] Processing item:', item);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/components/DetailsPanel.js:268
console.log('Found enriched data:', item.enrichedData);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/components/DetailsPanel.js:269
console.log('[DetailsPanel - generateEnhancedDetailsHtml] item.enrichedData:', item.enrichedData);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/components/DetailsPanel.js:308
console.log('Extracted links:', allLinks);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/components/DetailsPanel.js:313
console.log('[DetailsPanel - generateEnhancedDetailsHtml] Extracted links for renderWebLinks:', links);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/components/DetailsPanel.js:348
console.log('Found node data:', item.nodeData);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/components/DetailsPanel.js:702
console.log('[DetailsPanel] Rendering todo plan - version in content:', versionMatch ? versionMatch[1] : 'unknown');
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/components/DetailsPanel.js:703
console.log('[DetailsPanel] Parsed sections:', sections.length, sections.map(s => ({ title: s.title, taskCount: (s.content.match(/^[ ]*[-*] \[[ x~]/gm) || []).length })));
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/components/DetailsPanel.js:704
console.log('[DetailsPanel] Full todoPlanContent length:', todoPlanContent?.length);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/components/FinalReport.js:782
console.log(`Processing citation ${citationNumber}`);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/components/FinalReport.js:813
console.log('Found references section:', referencesSection.substring(0, 200) + '...');
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/components/FinalReport.js:836
console.log(`Found match with pattern:`, pattern, citationMatch);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/components/FinalReport.js:877
console.log(`Found URL in citation line:`, urlMatch[1]);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/components/FinalReport.js:898
console.log(`Searching entire document for citation ${citationNumber}`);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/components/FinalReport.js:904
console.log(`Found URL near citation:`, citationUrlMatch[1]);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/components/FinalReport.js:920
console.log(`Found URL in paragraph with citation:`, urlMatches[0]);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/components/FinalReport.js:934
console.log(`Using URL by position:`, url);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/components/FinalReport.js:941
console.log(`Falling back to first URL found:`, allUrls[0]);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/components/FinalReport.js:949
console.log(`No URL found for citation ${citationNumber}`);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/components/FinalReport.js:1124
console.log('Error parsing URL for title extraction:', e);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/components/ResearchPanel.js:540
console.log('[RESEARCH_EVENT]', event.event_type || event.type, event)
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/components/ResearchPanel.js:903
console.log(`Node end: ${nodeName}`, event.data)
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/components/ResearchPanel.js:957
console.log("Received research complete event:", event)
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:51
console.log(`Setting shouldAutoReconnect to ${value}`);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:57
console.log('Manually disconnecting research event source');
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:60
console.log('Closing SSE connection manually');
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:66
console.log('Clearing stale connection timer');
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:84
console.log('cancelResearch called');
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:91
console.log(`Requesting backend to stop research for session ${currentSessionId}`);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:98
console.log('Backend stop response:', data);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:101
console.log('Error requesting backend stop:', err);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:106
console.log('Canceling active reader');
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:108
console.log('Error canceling reader:', err);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:115
console.log('Clearing connection check interval');
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:124
console.log(`Successfully canceled research request for "${canceledRequest}"`);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:149
console.log('Clearing polling interval');
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:183
console.log('[DEBUG] startResearch called with:', { query, provider, model, uploadedFileContent, databaseInfo });
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:190
console.log('[DEBUG] Stored event handlers:', { onEvent: typeof onEvent, onComplete: typeof onComplete, onError: typeof onError });
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:197
console.log('Cleaning up any previous sessions for fresh start...');
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:204
console.log('✅ Cleanup complete:', cleanupData);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:207
console.log('⚠️ Cleanup request failed (non-fatal):', cleanupErr);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:212
// console.log(`Starting research with URL: ${apiUrl}, steering: ${enableSteering}`);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:215
console.log(`Research settings: extraEffort=${extraEffort}, minimumEffort=${minimumEffort}, benchmarkMode=${benchmarkMode}`);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:239
console.log('Ignoring duplicate request within debounce time');
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:247
console.log('Request already in progress, ignoring duplicate');
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:254
console.log(`Cleaning up request: ${requestKey}`);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:273
console.log('[DEBUG] Adding database_info to request:', databaseInfo);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:287
console.log('[DEBUG] Converting uploaded file content array to string');
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:297
console.log('[DEBUG] Added uploaded_data_content to request body, length:', combinedContent.length);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:302
console.log('[DEBUG] Added uploaded_data_content (string) to request body, length:', uploadedFileContent.length);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:305
console.log('Making research request with body:', requestBody);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:321
console.log('Research request response:', data);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:324
// console.log('[STEERING] Research started with steering enabled');
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:331
// console.log(`[STEERING] Set current session ID: ${currentSessionId}`);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:334
// console.log('[STEERING] Starting plan polling for real-time updates');
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:345
console.log(`Received stream URL: ${streamUrl}`);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:363
console.log(`[DEBUG] connectToEventSource called with url: ${url}, onEvent handler:`, typeof onEvent);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:376
console.log(`Connecting to event source: ${fullUrl}`);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:386
console.log(`SSE connection opened successfully! ReadyState: ${eventSource?.readyState}`, event);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:391
console.log('Successfully reconnected to SSE stream.');
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:407
console.log('Research already complete - clearing stale connection timer');
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:415
console.log('Connection appears to be stale - no events in 30 seconds');
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:428
console.log(`[DEBUG] processEvent called with eventType: ${eventType}, event.data:`, event.data);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:433
console.log(`Received ${eventType} event with empty or undefined data`);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:439
console.log(`[DEBUG] Parsed data for ${eventType}:`, parsedData);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:443
console.log(`[DEBUG] Received event type: ${eventType}`, parsedData);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:448
console.log(`Received array of ${parsedData.length} events for type ${eventType}`);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:452
console.log(`[DEBUG] Calling onEvent for array item ${index + 1}/${parsedData.length}`);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:459
console.log(`[DEBUG] Calling onEvent for single event of type ${eventType}`);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:462
console.log(`[DEBUG] onEvent handler is null/undefined for event type ${eventType}`);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:499
console.log('Research complete event received through named listener - disabling auto-reconnect');
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:508
console.log('Research complete - cleaning up request');
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:514
console.log('Closing SSE connection after receiving research_complete');
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:520
console.log('Clearing stale connection timer after research_complete');
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:544
console.log(`[DEBUG] Received event through 'message' listener:`, event.data);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:548
console.log(`Received generic message event with empty or undefined data`);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:555
console.log(`[DEBUG] Received event through 'message' listener with type: ${eventType}`, data);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:564
console.log(`[DEBUG] Calling onEvent from message listener for type: ${eventType}`);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:567
console.log(`[DEBUG] onEvent handler is null/undefined in message listener`);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:577
console.log(`[DEBUG] Received event through onmessage:`, event.data);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:585
console.log(`Received onmessage event with empty or undefined data`);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:591
console.log(`[DEBUG] Parsed data in onmessage:`, parsedData);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:595
console.log(`Received array of ${parsedData.length} events via onmessage`);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:600
console.log(`[DEBUG] Skipping duplicate SSE event on fallback 'message' for: ${eventType}`);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:606
console.log('Research complete event received in onmessage handler (array) - disabling auto-reconnect');
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:612
console.log(`[DEBUG] Processing event ${index + 1}/${parsedData.length} from onmessage array with type: ${eventType}`);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:614
console.log(`[DEBUG] Calling onEvent from onmessage array for type: ${eventType}`);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:624
console.log(`[DEBUG] Skipping duplicate SSE event on fallback 'message' for: ${eventType}`);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:630
console.log('Research complete event received in onmessage handler (single) - disabling auto-reconnect');
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:636
console.log(`Received unnamed single message event with type: ${eventType}`);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:657
console.log('Ignoring EventSource error since research is already complete');
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:668
console.log('Auto-reconnect is enabled, will try to reconnect...');
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:672
console.log('Closing event source due to error and auto-reconnect disabled.');
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:683
console.log('Connection terminated without reconnect - cleaning up request');
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:698
// console.log(`[STEERING] Starting polling for session: ${sessionId}`);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:704
// console.log(`[STEERING] Polling session status for: ${sessionId}`);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:712
// console.log('[STEERING] Session status:', sessionData);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:729
console.log('Research completed, stopping polling');
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:760
// console.log(`[STEERING] Sending message to session ${currentSessionId}: ${message}`);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:775
// console.log('[STEERING] Message sent successfully:', data);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:823
// console.log(`[STEERING] Fetching plan status for session: ${currentSessionId}`);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:832
// console.log('[STEERING] Received plan status:', {
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:868
console.log('[STEERING] Stopping plan polling');
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:899
console.log(`[STEERING] Getting todo plan for session: ${currentSessionId}`);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:902
console.log(`[STEERING] Failed to get todo plan: ${response.status}`);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:907
console.log('[STEERING] Got todo plan:', planData);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:920
console.log('Research is already complete - will not attempt to reconnect');
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:928
console.log('Not reconnecting as auto-reconnect is disabled');
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:932
console.log('Not reconnecting - cleaning up request');
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:953
console.log(`Connection lost. Reconnection attempt ${attempt}/${maxAttempts} scheduled...`);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:976
console.log(`Attempting reconnection ${attempt}/${maxAttempts}...`);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:980
console.log(`Reconnecting to existing stream: ${lastResponseUrl}`);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:985
console.log(`Attempting to reconnect for query: "${lastQuery}"`);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

ai-research-assistant/src/services/researchService.js:1008
console.log('Maximum reconnection attempts reached.');
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Disabled or suppressed security logging

medium

Detected patterns that disable, silence, or suppress logging or audit trails. Disabling security logging can mask malicious activity and hinder incident investigation.

ai-research-assistant/src/services/researchService.js:672
console.log('Closing event source due to error and auto-reconnect disabled.');
How to fix

Ensure security-related logging is always enabled in production. Never suppress audit trails or security event logs.

Disabled or suppressed security logging

medium

Detected patterns that disable, silence, or suppress logging or audit trails. Disabling security logging can mask malicious activity and hinder incident investigation.

ai-research-assistant/src/services/researchService.js:928
console.log('Not reconnecting as auto-reconnect is disabled');
How to fix

Ensure security-related logging is always enabled in production. Never suppress audit trails or security event logs.

Disabled or suppressed security logging

medium

Detected patterns that disable, silence, or suppress logging or audit trails. Disabling security logging can mask malicious activity and hinder incident investigation.

services/file_parsers.py:767
video.audio.write_audiofile(temp_audio_path, verbose=False, logger=None)
How to fix

Ensure security-related logging is always enabled in production. Never suppress audit trails or security event logs.

Disabled or suppressed security logging

medium

Detected patterns that disable, silence, or suppress logging or audit trails. Disabling security logging can mask malicious activity and hinder incident investigation.

src/graph.py:317
logger.info(f"callbacks at entry: {'present' if callbacks else 'none'}")
How to fix

Ensure security-related logging is always enabled in production. Never suppress audit trails or security event logs.

Disabled or suppressed security logging

medium

Detected patterns that disable, silence, or suppress logging or audit trails. Disabling security logging can mask malicious activity and hinder incident investigation.

src/state.py:272
# Silently fail - trajectory logging should never break research
How to fix

Ensure security-related logging is always enabled in production. Never suppress audit trails or security event logs.

Disabled or suppressed security logging

medium

Detected patterns that disable, silence, or suppress logging or audit trails. Disabling security logging can mask malicious activity and hinder incident investigation.

src/tools/executor.py:178
logger.info(f"Tool class: {tool.__class__.__name__}, Config present: {hasattr(tool, 'config') and tool.config is not None}")
How to fix

Ensure security-related logging is always enabled in production. Never suppress audit trails or security event logs.

Disabled or suppressed security logging

medium

Detected patterns that disable, silence, or suppress logging or audit trails. Disabling security logging can mask malicious activity and hinder incident investigation.

src/tools/registry.py:32
logger.info(f"[SearchToolRegistry.__init__] Initializing registry with config type: {type(config).__name__ if config else 'None'}")
How to fix

Ensure security-related logging is always enabled in production. Never suppress audit trails or security event logs.

Disabled or suppressed security logging

medium

Detected patterns that disable, silence, or suppress logging or audit trails. Disabling security logging can mask malicious activity and hinder incident investigation.

src/visualization_agent.py:288
self.logger.info("[VisualizationAgent] Defaulting to 'visualization_needed: False' due to parsing failure.")
How to fix

Ensure security-related logging is always enabled in production. Never suppress audit trails or security event logs.

Disabled or suppressed security logging

medium

Detected patterns that disable, silence, or suppress logging or audit trails. Disabling security logging can mask malicious activity and hinder incident investigation.

src/visualization_agent.py:296
# else: # Old fallback logic based on regex content analysis (now handled by LLM or the final 'False' fallback)
How to fix

Ensure security-related logging is always enabled in production. Never suppress audit trails or security event logs.

Disabled or suppressed security logging

medium

Detected patterns that disable, silence, or suppress logging or audit trails. Disabling security logging can mask malicious activity and hinder incident investigation.

src/visualization_agent.py:970
self.logger.info(f"[VisualizationAgent] Final visualization needs keys: {vis_needs.keys() if vis_needs else 'None'}")
How to fix

Ensure security-related logging is always enabled in production. Never suppress audit trails or security event logs.

Disabled or suppressed security logging

medium

Detected patterns that disable, silence, or suppress logging or audit trails. Disabling security logging can mask malicious activity and hinder incident investigation.

test_unified_query.py:49
def trace_state_changes(state, node_name=None):
How to fix

Ensure security-related logging is always enabled in production. Never suppress audit trails or security event logs.

Request to localhost or loopback address

high

Requests targeting 127.0.0.1, localhost, or [::1] may access internal services not intended to be exposed.

ai-research-assistant/src/components/InitialScreen.js:283
const apiBaseUrl = isDevelopment ? 'http://localhost:8000' : ''
How to fix

Block requests to localhost and loopback addresses. Implement URL validation that rejects 127.x.x.x and ::1.

Request to localhost or loopback address

high

Requests targeting 127.0.0.1, localhost, or [::1] may access internal services not intended to be exposed.

ai-research-assistant/src/components/InitialScreen.js:569
return isDevelopment ? 'http://localhost:8000' : ''
How to fix

Block requests to localhost and loopback addresses. Implement URL validation that rejects 127.x.x.x and ::1.

HTTP request with unvalidated URL parameter

high

Passing user-controlled variables directly to fetch, axios, or http.get without URL validation enables SSRF attacks.

ai-research-assistant/src/services/researchService.js:308
const response = await fetch(apiUrl, {
How to fix

Validate and sanitize all URLs before making HTTP requests. Use an allowlist of permitted domains.

Request to localhost or loopback address

high

Requests targeting 127.0.0.1, localhost, or [::1] may access internal services not intended to be exposed.

src/tools/examples/list_mcp_servers.py:28
base_url="http://localhost:3000"
How to fix

Block requests to localhost and loopback addresses. Implement URL validation that rejects 127.x.x.x and ::1.

Request to localhost or loopback address

high

Requests targeting 127.0.0.1, localhost, or [::1] may access internal services not intended to be exposed.

src/tools/examples/list_mcp_servers.py:58
base_url="http://localhost:3000"
How to fix

Block requests to localhost and loopback addresses. Implement URL validation that rejects 127.x.x.x and ::1.

Request to localhost or loopback address

high

Requests targeting 127.0.0.1, localhost, or [::1] may access internal services not intended to be exposed.

src/tools/examples/list_mcp_servers.py:81
base_url="http://localhost:3000"
How to fix

Block requests to localhost and loopback addresses. Implement URL validation that rejects 127.x.x.x and ::1.

Request to localhost or loopback address

high

Requests targeting 127.0.0.1, localhost, or [::1] may access internal services not intended to be exposed.

src/tools/examples/list_mcp_servers.py:136
#     url="http://localhost:8931/sse" # Using SSE endpoint from docs
How to fix

Block requests to localhost and loopback addresses. Implement URL validation that rejects 127.x.x.x and ::1.

Request to localhost or loopback address

high

Requests targeting 127.0.0.1, localhost, or [::1] may access internal services not intended to be exposed.

src/tools/examples/list_mcp_servers.py:166
url = f"http://localhost:{server['default_port']}/mcp/v1/initialize"
How to fix

Block requests to localhost and loopback addresses. Implement URL validation that rejects 127.x.x.x and ::1.

Request to localhost or loopback address

high

Requests targeting 127.0.0.1, localhost, or [::1] may access internal services not intended to be exposed.

src/tools/examples/puppeteer_research.py:54
base_url="http://localhost:3000"
How to fix

Block requests to localhost and loopback addresses. Implement URL validation that rejects 127.x.x.x and ::1.

HTML comment injection in tool description

critical

HTML comments in tool descriptions may contain hidden instructions intended to influence LLM reasoning.

src/graph.py:2809
markdown_report = re.sub(r"<!--.*?-->", "", markdown_report, flags=re.DOTALL)
How to fix

Remove HTML comments from description strings. Use source code comments instead.

medium

API endpoints without rate limiting are vulnerable to brute force and denial of service.

app.py:150
@app.get("/{path:path}")
How to fix

Add rate limiting middleware to all public API endpoints.

Missing OAuth scope validation

medium

OAuth-protected endpoints that don't validate scopes may allow unauthorized actions.

llm_clients.py:958
api_key: The SambaNova API key (Bearer token)
How to fix

Validate OAuth scopes on every endpoint. Check that the token has required permissions.

Missing OAuth scope validation

medium

OAuth-protected endpoints that don't validate scopes may allow unauthorized actions.

llm_clients.py:1023
"Authorization": f"Bearer {self._api_key}",
How to fix

Validate OAuth scopes on every endpoint. Check that the token has required permissions.

Missing OAuth scope validation

medium

OAuth-protected endpoints that don't validate scopes may allow unauthorized actions.

llm_clients.py:1134
"Authorization": f"Bearer {self._api_key}",
How to fix

Validate OAuth scopes on every endpoint. Check that the token has required permissions.

Missing rate limiting on endpoint

medium

API endpoints without rate limiting are vulnerable to brute force and denial of service.

routers/simple_steering_api.py:74
@router.post("/message", response_model=SteeringResponse)
How to fix

Add rate limiting middleware to all public API endpoints.

Missing rate limiting on endpoint

medium

API endpoints without rate limiting are vulnerable to brute force and denial of service.

routers/simple_steering_api.py:165
@router.get("/plan/{session_id}", response_model=SessionPlan)
How to fix

Add rate limiting middleware to all public API endpoints.

Missing rate limiting on endpoint

medium

API endpoints without rate limiting are vulnerable to brute force and denial of service.

routers/simple_steering_api.py:196
@router.get("/status/{session_id}", response_model=PlanStatus)
How to fix

Add rate limiting middleware to all public API endpoints.

Missing rate limiting on endpoint

medium

API endpoints without rate limiting are vulnerable to brute force and denial of service.

routers/simple_steering_api.py:273
@router.get("/interactive/session/{session_id}")
How to fix

Add rate limiting middleware to all public API endpoints.

Missing rate limiting on endpoint

medium

API endpoints without rate limiting are vulnerable to brute force and denial of service.

routers/simple_steering_api.py:347
@router.get("/sessions")
How to fix

Add rate limiting middleware to all public API endpoints.

Missing rate limiting on endpoint

medium

API endpoints without rate limiting are vulnerable to brute force and denial of service.

routers/simple_steering_api.py:560
@router.get("/examples")
How to fix

Add rate limiting middleware to all public API endpoints.

No CSRF protection on state-changing endpoint

medium

POST/PUT/DELETE endpoints without CSRF tokens are vulnerable to cross-site request forgery.

routers/simple_steering_api.py:74
@router.post("/message", response_model=SteeringResponse)
How to fix

Implement CSRF protection using tokens or SameSite cookies.

path.join/resolve with user-controlled input

high

Using path.join or path.resolve with variables from user input without validation can lead to directory traversal.

benchmarks/process_drb.py:54
file_path = os.path.join(args.input_dir, file)
How to fix

Sanitize user input before passing to path.join/resolve. Use path.normalize() and check for '..' sequences.

Python open() with user-controlled path

high

Using Python's open() with variable paths without validation enables path traversal.

benchmarks/process_drb.py:81
with open(f"deep_research_bench/data/test_data/raw_data/{args.model_name}.jsonl", "w", encoding="utf-8") as f:
How to fix

Validate and sanitize file paths using os.path.realpath() and check against allowed directories.

Access to sensitive system files

critical

Direct access to sensitive files like /etc/passwd, /etc/shadow, or SSH keys indicates potential data exfiltration.

e2b.toml:16
start_cmd = "/root/.jupyter/start-up.sh"
How to fix

Remove direct references to sensitive system files. Use a restricted file access layer.

Windows-style path traversal patterns

high

Backslash-based directory traversal patterns targeting Windows file systems.

services/content_analysis.py:466
description += f"- Preview: {content[:100]}...\n"
How to fix

Normalize path separators and apply traversal checks for both forward and backslashes.

Windows-style path traversal patterns

high

Backslash-based directory traversal patterns targeting Windows file systems.

test_unified_query.py:81
print("...\n")
How to fix

Normalize path separators and apply traversal checks for both forward and backslashes.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

llm_clients.py:1529
response = llm.invoke(messages, config=config)
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

math_client.py:62
response = model.invoke(messages)
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

math_client.py:79
result = await tool.ainvoke(func_call["args"])
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

math_client.py:98
multiply_result = await tool.ainvoke(multiply_args)
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

math_client.py:152
final_response = model.invoke(messages)
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

math_client.py:157
final_response = model.invoke(messages)
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

math_client.py:180
result = await tool.ainvoke(args)
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

math_client.py:188
final_response = model.invoke(messages)
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

math_client.py:193
final_response = model.invoke(messages)
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

math_client.py:199
retry_response = model.invoke(messages)
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

math_client.py:213
result = await tool.ainvoke(func_call["args"])
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

math_client.py:221
final_response = model.invoke(messages)
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

math_client.py:247
result = await tool.ainvoke(args)
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

math_client.py:255
final_response = model.invoke(messages)
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

math_client_langgraph.py:98
agent_response = await agent_executor.ainvoke({"input": query})
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

math_client_new.py:86
agent_response = await agent_executor.ainvoke({"input": query})
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

services/content_analysis.py:291
response = llm.invoke([message])
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

services/content_analysis.py:317
response = llm.invoke([message])
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

services/content_analysis.py:342
response = llm.invoke([message])
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

src/agent_architecture.py:281
response = await llm_with_tool.ainvoke(messages)  # Use await and ainvoke
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

src/agent_architecture.py:751
response = await llm.ainvoke(messages)
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

src/agent_architecture.py:2409
search_result = await tool_executor.execute_tool(
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

src/graph.py:823
response = llm.invoke([HumanMessage(content=analysis_prompt)])
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

src/graph.py:1159
response = llm.invoke(
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

src/graph.py:1430
response = llm.invoke(
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

src/graph.py:2330
result = llm.invoke(
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

src/graph.py:3340
response = llm.invoke(prompt)
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

src/graph.py:3703
response = llm.invoke(prompt)
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

src/graph.py:4308
response = llm.invoke(prompt)
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

src/graph.py:4767
response = llm.invoke(prompt)
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

src/graph.py:4971
response = llm.invoke(prompt, **invoke_kwargs)
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

src/graph.py:4981
response = llm.invoke(prompt)  # Fallback to calling without it
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Dynamic tool description modification at runtime

critical

Detected runtime reassignment of a tool's description property to a non-literal value. Dynamically modifying tool descriptions can allow an attacker to inject misleading instructions that alter LLM behavior.

src/simple_steering.py:449
task.description = action.get("description", task.description)
How to fix

Use only static, hardcoded string literals for tool descriptions. Never assign descriptions from variables, user input, or external data sources.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

src/simple_steering.py:131
response = await llm.ainvoke(messages)
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

src/simple_steering.py:365
response = await llm.ainvoke(messages)
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

src/simple_steering.py:556
response = await llm.ainvoke(messages)
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

src/simple_steering.py:654
response = await llm.ainvoke(messages)
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

src/tools/examples/math_custom_adapter.py:140
result = await executor.execute_tool(op_name, params)
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

src/tools/examples/math_example.py:65
result = await executor.execute_tool(
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

src/tools/examples/playwright_example.py:53
nav_result = await executor.execute_tool(
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

src/tools/examples/playwright_example.py:66
pdf_result = await executor.execute_tool(
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

src/tools/examples/playwright_example.py:99
screenshot_result = await executor.execute_tool(
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

src/tools/examples/playwright_example.py:147
# snapshot_result = await executor.execute_tool(
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

src/tools/examples/playwright_example.py:163
#     type_result = await executor.execute_tool(
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

src/tools/examples/puppeteer_example.py:58
result = await executor.execute_tool(
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

src/tools/examples/puppeteer_example.py:78
result = await executor.execute_tool(
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

src/tools/examples/puppeteer_example.py:109
result = await executor.execute_tool(
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

src/tools/examples/puppeteer_example.py:119
result = await executor.execute_tool(
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

src/tools/examples/simple_math_client.py:151
result = await client.execute_tool(op_name, params)
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

src/tools/executor.py:88
result = await tool.lc_tool.ainvoke(params, config=config)
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Dynamic tool description modification at runtime

critical

Detected runtime reassignment of a tool's description property to a non-literal value. Dynamically modifying tool descriptions can allow an attacker to inject misleading instructions that alter LLM behavior.

src/tools/test_mcp_tools.py:77
mock_tool.description = "Echo back the message."
How to fix

Use only static, hardcoded string literals for tool descriptions. Never assign descriptions from variables, user input, or external data sources.

Dynamic tool description modification at runtime

critical

Detected runtime reassignment of a tool's description property to a non-literal value. Dynamically modifying tool descriptions can allow an attacker to inject misleading instructions that alter LLM behavior.

src/tools/test_mcp_tools.py:105
assert tools[0].description == "Echo back the message."
How to fix

Use only static, hardcoded string literals for tool descriptions. Never assign descriptions from variables, user input, or external data sources.

Dynamic tool description modification at runtime

critical

Detected runtime reassignment of a tool's description property to a non-literal value. Dynamically modifying tool descriptions can allow an attacker to inject misleading instructions that alter LLM behavior.

src/tools/text2sql_tool.py:36
self.description = "Convert natural language queries to SQL and execute against uploaded databases"
How to fix

Use only static, hardcoded string literals for tool descriptions. Never assign descriptions from variables, user input, or external data sources.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

src/tools/text2sql_tool.py:435
response = llm_client.invoke([HumanMessage(content=prompt)])
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

src/tools/text2sql_tool.py:449
response = llm_client.invoke([HumanMessage(content=prompt)])
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Dynamic tool description modification at runtime

critical

Detected runtime reassignment of a tool's description property to a non-literal value. Dynamically modifying tool descriptions can allow an attacker to inject misleading instructions that alter LLM behavior.

src/tools/tool_schema.py:46
self.description = description
How to fix

Use only static, hardcoded string literals for tool descriptions. Never assign descriptions from variables, user input, or external data sources.

Dynamic tool description modification at runtime

critical

Detected runtime reassignment of a tool's description property to a non-literal value. Dynamically modifying tool descriptions can allow an attacker to inject misleading instructions that alter LLM behavior.

src/tools/tool_schema.py:83
self.description = description
How to fix

Use only static, hardcoded string literals for tool descriptions. Never assign descriptions from variables, user input, or external data sources.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

src/visualization_agent.py:202
response = await llm_with_tool.ainvoke(messages)
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

src/visualization_agent.py:460
response = await llm.ainvoke(messages)
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

src/visualization_agent.py:924
response = await llm.ainvoke(messages)
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Response referencing or invoking other tools

high

Detected tool responses that attempt to call or invoke other tools (use_tool, call_tool, invoke, execute_tool). A poisoned tool response could trick the LLM into executing additional tools without user consent.

test_graph.py:41
result = graph.invoke({"research_topic": research_topic}, config=config)
How to fix

Tool responses should never contain tool invocation patterns. Validate and sanitize all output to ensure it does not include cross-tool call instructions.

Hardcoded API key or token literal

critical

String literals matching known API key prefixes (sk-, ghp_, AKIA, xoxb-, etc.) or long base64-like strings may expose secrets in source code.

math_client_new.py:20
OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY", "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")
How to fix

Remove hardcoded secrets from source code. Use environment variables or a secrets manager.

Python subprocess with shell=True

critical

subprocess calls with shell=True execute commands through the shell, enabling injection attacks.

src/tools/examples/list_mcp_servers.py:212
result = subprocess.run(server["install_command"], shell=True)
How to fix

Set shell=False in subprocess calls and pass command as a list.

Python subprocess with shell=True

critical

subprocess calls with shell=True execute commands through the shell, enabling injection attacks.

src/tools/examples/list_mcp_servers.py:235
subprocess.run(server["run_command"], shell=True)
How to fix

Set shell=False in subprocess calls and pass command as a list.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/playwright_example.py:61
print("\nTaking screenshot (using PDF as workaround)...")
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/playwright_example.py:62
screenshots_dir = os.path.join(project_root, "screenshots")
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/playwright_example.py:62
screenshots_dir = os.path.join(project_root, "screenshots")
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/playwright_example.py:63
output_file_path = os.path.join(screenshots_dir, "example_com.pdf")
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/playwright_example.py:78
# Copy the file to our screenshots directory
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/playwright_example.py:80
os.makedirs(screenshots_dir, exist_ok=True)  # Ensure screenshots directory exists
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/playwright_example.py:80
os.makedirs(screenshots_dir, exist_ok=True)  # Ensure screenshots directory exists
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/playwright_example.py:94
# ALSO attempt to take an actual screenshot (as a second approach)
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/playwright_example.py:95
print("\nAlso attempting to take a PNG screenshot...")
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/playwright_example.py:96
output_screenshot_path = os.path.join(screenshots_dir, "linkedin_profile.png")
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/playwright_example.py:96
output_screenshot_path = os.path.join(screenshots_dir, "linkedin_profile.png")
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/playwright_example.py:99
screenshot_result = await executor.execute_tool(
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/playwright_example.py:100
"mcp.playwright.browser_take_screenshot",
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/playwright_example.py:104
print(f"Screenshot command executed. Result: {screenshot_result}")
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/playwright_example.py:106
# Check if Playwright saved the screenshot somewhere and reported the location
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/playwright_example.py:107
if isinstance(screenshot_result, str) and "Saved as" in screenshot_result:
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/playwright_example.py:107
if isinstance(screenshot_result, str) and "Saved as" in screenshot_result:
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/playwright_example.py:109
actual_path = screenshot_result.replace("Saved as", "").strip()
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/playwright_example.py:110
print(f"Actual screenshot file location: {actual_path}")
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/playwright_example.py:112
# Copy the file to our screenshots directory
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/playwright_example.py:114
shutil.copy2(actual_path, output_screenshot_path)
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/playwright_example.py:116
if os.path.exists(output_screenshot_path):
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/playwright_example.py:117
print(f"Successfully copied screenshot to: {output_screenshot_path}")
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/playwright_example.py:117
print(f"Successfully copied screenshot to: {output_screenshot_path}")
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/playwright_example.py:119
print(f"Failed to copy screenshot to: {output_screenshot_path}")
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/playwright_example.py:119
print(f"Failed to copy screenshot to: {output_screenshot_path}")
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/playwright_example.py:131
print(f"Found possible screenshot at: {newest_file}")
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/playwright_example.py:133
shutil.copy2(newest_file, output_screenshot_path)
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/playwright_example.py:134
if os.path.exists(output_screenshot_path):
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/playwright_example.py:135
print(f"Successfully copied most recent PNG to: {output_screenshot_path}")
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/playwright_example.py:137
print(f"Failed to copy most recent PNG to: {output_screenshot_path}")
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/playwright_example.py:141
print(f"Error processing screenshot: {e}")
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/puppeteer_example.py:72
# Take a screenshot
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/puppeteer_example.py:73
print("\nTaking screenshot...")
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/puppeteer_example.py:74
screenshots_dir = os.path.join(project_root, "screenshots")
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/puppeteer_example.py:74
screenshots_dir = os.path.join(project_root, "screenshots")
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/puppeteer_example.py:75
os.makedirs(screenshots_dir, exist_ok=True)
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/puppeteer_example.py:79
"mcp.puppeteer.puppeteer_screenshot",
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/puppeteer_example.py:81
"name": "example_screenshot",
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/puppeteer_example.py:94
screenshot_path = os.path.join(screenshots_dir, "example_screenshot.png")
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/puppeteer_example.py:94
screenshot_path = os.path.join(screenshots_dir, "example_screenshot.png")
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/puppeteer_example.py:94
screenshot_path = os.path.join(screenshots_dir, "example_screenshot.png")
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/puppeteer_example.py:97
with open(screenshot_path, 'wb') as f:
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/puppeteer_example.py:99
print(f"Screenshot saved to: {screenshot_path}")
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/puppeteer_example.py:102
print(f"Error taking screenshot: {e}")
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/puppeteer_research.py:100
# Take a screenshot (optional)
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/puppeteer_research.py:101
screenshot_path = f"screenshot_{url.replace('://', '_').replace('/', '_').replace('.', '_')}.png"
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/puppeteer_research.py:101
screenshot_path = f"screenshot_{url.replace('://', '_').replace('/', '_').replace('.', '_')}.png"
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/puppeteer_research.py:103
"mcp.puppeteer.screenshot",
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/puppeteer_research.py:104
{"path": screenshot_path}
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/puppeteer_research.py:106
print(f"Screenshot saved to: {screenshot_path}")
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/puppeteer_research.py:165
"screenshot_path": screenshot_path
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Clipboard or screenshot access for exfiltration

high

Accessing clipboard contents or taking screenshots may be used to capture and exfiltrate sensitive data.

src/tools/examples/puppeteer_research.py:165
"screenshot_path": screenshot_path
How to fix

Remove clipboard/screenshot access unless explicitly required by the tool's stated purpose.

Writing session data to external storage

high

Sending conversation, prompt, or session data to external storage services may leak sensitive user interactions.

src/tools/examples/simple_math_client.py:104
self.process.stdin.write(json.dumps(message).encode() + b"\n")
How to fix

Do not write session or conversation data to external storage. Keep user interaction data within the authorized session boundary.

Returning entire database records without field filtering

medium

Detected SELECT * or ORM queries without explicit field selection. Returning all columns risks exposing sensitive fields (passwords, tokens, internal IDs) to the client or LLM context.

src/tools/text2sql_tool.py:184
cursor.execute("SELECT * FROM data LIMIT 3")
How to fix

Always specify the exact columns or fields to return. Use SELECT with explicit column names or ORM select/projection options.

Returning entire database records without field filtering

medium

Detected SELECT * or ORM queries without explicit field selection. Returning all columns risks exposing sensitive fields (passwords, tokens, internal IDs) to the client or LLM context.

src/tools/text2sql_tool.py:285
cursor.execute(f"SELECT * FROM {table_name} LIMIT 3")
How to fix

Always specify the exact columns or fields to return. Use SELECT with explicit column names or ORM select/projection options.

Returning entire database records without field filtering

medium

Detected SELECT * or ORM queries without explicit field selection. Returning all columns risks exposing sensitive fields (passwords, tokens, internal IDs) to the client or LLM context.

src/tools/text2sql_tool.py:455
sql_query = "SELECT * FROM customers WHERE state = 'CA'"
How to fix

Always specify the exact columns or fields to return. Use SELECT with explicit column names or ORM select/projection options.