Scan path: C:\Users\gilad\Projects\warden\gallery\repos\pydantic-ai
Scanned: 2026-04-10 23:11 UTC
Warden: v1.6.0 · Scoring model v4.3 · 17 dimensions (weighted) · 235 pts
🔒 Privacy guarantee
All data collected locally — nothing left this machine.
API keys: partial hashes only.
Log content: never stored.
📊 Scanned 513 files (509 Python · 4 JS/TS) in pydantic-ai across 7 scan layers
24
/ 100
56 / 235 raw
UNGOVERNED
Core Governance (15 / 100)
D1 Tool Inventory
7 / 25
MEDIUM Cloud AI endpoint URL hardcoded in source — hinders environment portability
MEDIUM Cloud AI endpoint URL hardcoded in source — hinders environment portability
MEDIUM Cloud AI endpoint URL hardcoded in source — hinders environment portability
MEDIUM Cloud AI endpoint URL hardcoded in source — hinders environment portability
MEDIUM Cloud AI endpoint URL hardcoded in source — hinders environment portability
+ 20 more findings
D2 Risk Detection
0 / 20
CRITICAL Tool function without input validation
CRITICAL Tool function without input validation
CRITICAL Tool function without input validation
CRITICAL Tool function without input validation
CRITICAL Tool function without input validation
+ 4 more findings
D3 Policy Coverage
5 / 20
CRITICAL Agent with unrestricted tool access — all tools passed without allowlist
MEDIUM No concurrency block — parallel deployments possible
MEDIUM No concurrency block — parallel deployments possible
MEDIUM No concurrency block — parallel deployments possible
MEDIUM No concurrency block — parallel deployments possible
+ 3 more findings
D4 Credential Management
0 / 20
MEDIUM Exposed Generic Secret: api...-key
MEDIUM Exposed Generic Secret: api...v...
MEDIUM Exposed Generic Secret: api...v...
MEDIUM Exposed Generic Secret: api...v...
MEDIUM Exposed Generic Secret: api...v...
+ 55 more findings
D5 Log Hygiene
2 / 10
MEDIUM print() used instead of structured logging
MEDIUM print() used instead of structured logging
MEDIUM print() used instead of structured logging
MEDIUM print() used instead of structured logging
MEDIUM print() used instead of structured logging
+ 97 more findings
D6 Framework Coverage
1 / 5
HIGH LangChain used without CallbackManager — no tool/chain observability
Advanced Controls (11 / 50)
D7 Human-in-the-Loop
9 / 15
D8 Agent Identity
2 / 15
HIGH Agent class 'AbstractAgent' has no permission model
HIGH Agent class 'WrapperAgent' has no permission model
MEDIUM Agent class 'WrapperAgent' has no defined lifecycle states
HIGH Agent class 'Agent' has no permission model
HIGH Agent spawns sub-agents without depth limit
+ 6 more findings
D9 Threat Detection
0 / 20
HIGH Empty exception handler — errors silently swallowed
HIGH Empty exception handler — errors silently swallowed
HIGH Empty exception handler — errors silently swallowed
HIGH Empty exception handler — errors silently swallowed
HIGH Empty exception handler — errors silently swallowed
+ 33 more findings
Ecosystem (26 / 55)
D10 Prompt Security
3 / 15
HIGH Azure AI used without ContentSafetyClient — no content moderation
HIGH Azure AI used without ContentSafetyClient — no content moderation
HIGH Azure AI used without ContentSafetyClient — no content moderation
D11 Cloud / Platform
6 / 10
D12 LLM Observability
8 / 10
MEDIUM Hardcoded model name: 'Acquire a slot, waiting if necessary. Args: source: Identifier for observabi
MEDIUM Hardcoded model name: 'Acquire a slot, creating a span if waiting is required. Args: source: Identi
MEDIUM Hardcoded model name: 'Get an async context manager for the concurrency limiter. If limiter is None, returns a no-o
MEDIUM Hardcoded model name: 'anthropic.claude-3-5-sonnet-20241022-v2:0' — no routing/fallback
MEDIUM Hardcoded model name: 'us.anthropic.claude-3-5-sonnet-20241022-v2:0' — no routing/fallback
+ 111 more findings
D13 Data Recovery
3 / 10
D14 Compliance Maturity
6 / 10
LOW No environment: block — no required reviewers for deployments
MEDIUM Push trigger without branch protection guard
LOW No environment: block — no required reviewers for deployments
MEDIUM Push trigger without branch protection guard
LOW No environment: block — no required reviewers for deployments
+ 2 more findings
Unique Capabilities (4 / 30)
D15 Post-Exec Verification
3 / 10
D16 Data Flow Governance
0 / 10
D17 Adversarial Resilience
1 / 10
CRITICAL No content injection defense — hidden HTML/CSS/zero-width instructions pass to agents undetected. (86% attack success ra
CRITICAL No RAG poisoning protection — knowledge base documents not scanned for embedded instructions. (<0.1% contamination = >80
HIGH No behavioral trap detection — post-execution behavioral changes not monitored. (10/10 M365 Copilot attacks succeeded)
HIGH No approval integrity verification -- agent summaries for approval not cross-checked against actual actions. (Approval f
MEDIUM No adversarial testing evidence — no red team, no prompt injection tests
+ 2 more findings
Score reflects only what Warden can observe locally. Undetected controls are scored as 0, not assumed good. Dimensions are weighted by governance impact. Methodology: SCORING.md
Total Findings
387
17 CRITICAL · 55 HIGH
Tools Detected
0
None detected
Credentials
54
In source code
Governance Gaps
4
of 17 dimensions
Compliance Refs
13
EU AI Act / OWASP / MITRE
🛡 Governance Layer Detection0 tools detected · 17 dimensions
D2: Risk Detection — none detected
Risk classification, semantic analysis, intent-parameter consistency
0 / 20 pts
D4: Credential Management — none detected
Env var exposure, secrets manager, key rotation, NHI credential lifecycle
0 / 20 pts
D9: Threat Detection — none detected
Behavioral baselines, anomaly detection, cross-session tracking, kill switch
0 / 20 pts
D16: Data Flow Governance — none detected
Taint labels, data classification, cross-tool leakage prevention
0 / 10 pts
📊 Solutions Comparison2 rows · 17 dimensions · 235 max pts
Tool D1D2D3D4D5D6D7D8D9D10D11D12D13D14D15D16D17 /235 /100
Max pts252020201051515201510101010101010235
SharkRouter231818189514141814999999921491
Your Scan705021920368363015624
SharkRouter per-dimension scores are proportional estimates from total score. Detected tool scores are totals only (per-dimension breakdown not available). Methodology: SCORING.md
🔎 Findings387 total
CRITICAL 17
CRITICAL D2
Tool function without input validation
...pydantic-ai\examples\pydantic_ai_examples\bank_support.py:72
Add input validation (pydantic, jsonschema, or manual checks)
OWASP LLM01
CRITICAL D2
Tool function without input validation
...pydantic-ai\examples\pydantic_ai_examples\data_analyst.py:77
Add input validation (pydantic, jsonschema, or manual checks)
OWASP LLM01
CRITICAL D2
Tool function without input validation
...pydantic-ai\examples\pydantic_ai_examples\data_analyst.py:95
Add input validation (pydantic, jsonschema, or manual checks)
OWASP LLM01
Show 14 more CRITICAL findings
CRITICAL D2
Tool function without input validation
...dantic-ai\examples\pydantic_ai_examples\flight_booking.py:70
Add input validation (pydantic, jsonschema, or manual checks)
OWASP LLM01
CRITICAL D2
Tool function without input validation
...ry\repos\pydantic-ai\examples\pydantic_ai_examples\rag.py:56
Add input validation (pydantic, jsonschema, or manual checks)
OWASP LLM01
CRITICAL D2
Tool function without input validation
...dantic-ai\examples\pydantic_ai_examples\roulette_wheel.py:35
Add input validation (pydantic, jsonschema, or manual checks)
OWASP LLM01
CRITICAL D2
Tool function without input validation
...ydantic-ai\examples\pydantic_ai_examples\weather_agent.py:67
Add input validation (pydantic, jsonschema, or manual checks)
OWASP LLM01
CRITICAL D2
Tool function without input validation
...\pydantic-ai\examples\pydantic_ai_examples\evals\agent.py:34
Add input validation (pydantic, jsonschema, or manual checks)
OWASP LLM01
CRITICAL D3
Agent with unrestricted tool access — all tools passed without allowlist
...ydantic-ai\pydantic_ai_slim\pydantic_ai\agent\__init__.py:668
Scope tools to only what the agent needs
EU AI Act Article 15
CRITICAL D2
JavaScript: Agent loop without exit condition
...pos\pydantic-ai\examples\pydantic_ai_examples\chat_app.ts:17
Add max_iterations or break condition
CRITICAL D4
Exposed Database URL with credentials: pos...4320
...ry\repos\pydantic-ai\examples\pydantic_ai_examples\rag.py:196
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
CRITICAL D4
Exposed Database URL with credentials: pos...4320
...epos\pydantic-ai\examples\pydantic_ai_examples\sql_gen.py:143
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
CRITICAL D5
No audit logging for tool calls detected
Add audit logging for all tool/agent executions
EU AI Act Article 12
CRITICAL D4
API key appears alongside cloud AI provider URL — credential in source code
...ects\warden\gallery\repos\pydantic-ai\tests\test_agent.py:6537
Remove API keys from source; use secrets manager, env vars, or managed identity
EU AI Act Article 15OWASP LLM06
CRITICAL D4
API key appears alongside cloud AI provider URL — credential in source code
...gallery\repos\pydantic-ai\tests\providers\test_litellm.py:32
Remove API keys from source; use secrets manager, env vars, or managed identity
EU AI Act Article 15OWASP LLM06
CRITICAL D17
No content injection defense — hidden HTML/CSS/zero-width instructions pass to agents undetected. (86% attack success rate)
Deploy trap defense layer on tool results
EU AI Act Article 15OWASP LLM01MITRE AML.T0051
CRITICAL D17
No RAG poisoning protection — knowledge base documents not scanned for embedded instructions. (<0.1% contamination = >80% attack success)
Deploy trap defense layer on tool results
EU AI Act Article 15OWASP LLM01MITRE AML.T0049
HIGH 55
HIGH D9
Empty exception handler — errors silently swallowed
...s\pydantic-ai\pydantic_ai_slim\pydantic_ai\concurrency.py:183
Log the exception or handle it explicitly
HIGH D9
Empty exception handler — errors silently swallowed
...ery\repos\pydantic-ai\pydantic_ai_slim\pydantic_ai\mcp.py:822
Log the exception or handle it explicitly
HIGH D9
Empty exception handler — errors silently swallowed
...epos\pydantic-ai\pydantic_ai_slim\pydantic_ai\messages.py:1007
Log the exception or handle it explicitly
Show 52 more HIGH findings
HIGH D9
Empty exception handler — errors silently swallowed
...epos\pydantic-ai\pydantic_ai_slim\pydantic_ai\messages.py:1897
Log the exception or handle it explicitly
HIGH D9
Empty exception handler — errors silently swallowed
...\repos\pydantic-ai\pydantic_ai_slim\pydantic_ai\result.py:81
Log the exception or handle it explicitly
HIGH D9
Empty exception handler — errors silently swallowed
...repos\pydantic-ai\pydantic_ai_slim\pydantic_ai\retries.py:375
Log the exception or handle it explicitly
HIGH D9
Empty exception handler — errors silently swallowed
...ery\repos\pydantic-ai\pydantic_ai_slim\pydantic_ai\run.py:253
Log the exception or handle it explicitly
HIGH D9
Empty exception handler — errors silently swallowed
...y\repos\pydantic-ai\pydantic_ai_slim\pydantic_ai\usage.py:176
Log the exception or handle it explicitly
HIGH D9
Empty exception handler — errors silently swallowed
...\pydantic-ai\pydantic_ai_slim\pydantic_ai\_agent_graph.py:666
Log the exception or handle it explicitly
HIGH D9
Empty exception handler — errors silently swallowed
...\pydantic-ai\pydantic_ai_slim\pydantic_ai\_agent_graph.py:1041
Log the exception or handle it explicitly
HIGH D9
Empty exception handler — errors silently swallowed
...os\pydantic-ai\pydantic_ai_slim\pydantic_ai\agent\spec.py:346
Log the exception or handle it explicitly
HIGH D9
Empty exception handler — errors silently swallowed
...ydantic-ai\pydantic_ai_slim\pydantic_ai\agent\__init__.py:1442
Log the exception or handle it explicitly
HIGH D9
Empty exception handler — errors silently swallowed
...\pydantic_ai_slim\pydantic_ai\durable_exec\dbos\_agent.py:115
Log the exception or handle it explicitly
HIGH D9
Empty exception handler — errors silently swallowed
...\pydantic_ai_slim\pydantic_ai\durable_exec\dbos\_agent.py:130
Log the exception or handle it explicitly
HIGH D9
Empty exception handler — errors silently swallowed
...ai\pydantic_ai_slim\pydantic_ai\durable_exec\dbos\_mcp.py:119
Log the exception or handle it explicitly
HIGH D9
Empty exception handler — errors silently swallowed
...ai\pydantic_ai_slim\pydantic_ai\durable_exec\dbos\_mcp.py:125
Log the exception or handle it explicitly
HIGH D9
Empty exception handler — errors silently swallowed
...ntic_ai_slim\pydantic_ai\durable_exec\prefect\_toolset.py:58
Log the exception or handle it explicitly
HIGH D9
Empty exception handler — errors silently swallowed
...ydantic_ai_slim\pydantic_ai\durable_exec\temporal\_mcp.py:128
Log the exception or handle it explicitly
HIGH D9
Empty exception handler — errors silently swallowed
...ydantic_ai_slim\pydantic_ai\durable_exec\temporal\_mcp.py:134
Log the exception or handle it explicitly
HIGH D9
Empty exception handler — errors silently swallowed
...tic_ai_slim\pydantic_ai\durable_exec\temporal\_toolset.py:221
Log the exception or handle it explicitly
HIGH D9
Empty exception handler — errors silently swallowed
...tic_ai_slim\pydantic_ai\durable_exec\temporal\_toolset.py:239
Log the exception or handle it explicitly
HIGH D9
Empty exception handler — errors silently swallowed
...tic_ai_slim\pydantic_ai\durable_exec\temporal\__init__.py:40
Log the exception or handle it explicitly
HIGH D9
Empty exception handler — errors silently swallowed
...i\pydantic_ai_slim\pydantic_ai\embeddings\instrumented.py:146
Log the exception or handle it explicitly
HIGH D9
Empty exception handler — errors silently swallowed
...i\pydantic_ai_slim\pydantic_ai\embeddings\instrumented.py:191
Log the exception or handle it explicitly
HIGH D9
Empty exception handler — errors silently swallowed
...ic-ai\pydantic_ai_slim\pydantic_ai\models\instrumented.py:507
Log the exception or handle it explicitly
HIGH D9
Empty exception handler — errors silently swallowed
...ic-ai\pydantic_ai_slim\pydantic_ai\models\instrumented.py:552
Log the exception or handle it explicitly
HIGH D9
Empty exception handler — errors silently swallowed
...pydantic-ai\pydantic_ai_slim\pydantic_ai\models\openai.py:342
Log the exception or handle it explicitly
HIGH D9
Empty exception handler — errors silently swallowed
...ntic-ai\pydantic_ai_slim\pydantic_ai\models\openrouter.py:663
Log the exception or handle it explicitly
HIGH D9
Empty exception handler — errors silently swallowed
...pydantic-ai\pydantic_ai_slim\pydantic_ai\providers\xai.py:40
Log the exception or handle it explicitly
HIGH D9
Empty exception handler — errors silently swallowed
...ntic-ai\pydantic_ai_slim\pydantic_ai\ui\ag_ui\_adapter.py:388
Log the exception or handle it explicitly
HIGH D9
Empty exception handler — errors silently swallowed
...-ai\pydantic_ai_slim\pydantic_ai\ui\vercel_ai\_adapter.py:336
Log the exception or handle it explicitly
HIGH D9
Empty exception handler — errors silently swallowed
...pydantic-ai\pydantic_ai_slim\pydantic_ai\_cli\__init__.py:322
Log the exception or handle it explicitly
HIGH D9
Empty exception handler — errors silently swallowed
...repos\pydantic-ai\pydantic_evals\pydantic_evals\online.py:523
Log the exception or handle it explicitly
HIGH D9
Empty exception handler — errors silently swallowed
...repos\pydantic-ai\pydantic_evals\pydantic_evals\online.py:572
Log the exception or handle it explicitly
HIGH D9
Empty exception handler — errors silently swallowed
...repos\pydantic-ai\pydantic_evals\pydantic_evals\online.py:1031
Log the exception or handle it explicitly
HIGH D9
Empty exception handler — errors silently swallowed
...s\pydantic-ai\pydantic_graph\pydantic_graph\beta\graph.py:809
Log the exception or handle it explicitly
HIGH D9
Empty exception handler — errors silently swallowed
...s\pydantic-ai\pydantic_graph\pydantic_graph\beta\graph.py:819
Log the exception or handle it explicitly
HIGH D9
Empty exception handler — errors silently swallowed
...ic-ai\pydantic_graph\pydantic_graph\beta\graph_builder.py:393
Log the exception or handle it explicitly
HIGH D8
Agent class 'AbstractAgent' has no permission model
...ydantic-ai\pydantic_ai_slim\pydantic_ai\agent\abstract.py:85
Add role/permission checks before tool dispatch
HIGH D8
Agent class 'WrapperAgent' has no permission model
...pydantic-ai\pydantic_ai_slim\pydantic_ai\agent\wrapper.py:32
Add role/permission checks before tool dispatch
HIGH D8
Agent class 'Agent' has no permission model
...ydantic-ai\pydantic_ai_slim\pydantic_ai\agent\__init__.py:141
Add role/permission checks before tool dispatch
HIGH D8
Agent spawns sub-agents without depth limit
...ydantic-ai\pydantic_ai_slim\pydantic_ai\agent\__init__.py:668
Add max_depth or spawn limit to prevent recursive agent creation
EU AI Act Article 14
HIGH D8
Agent class 'DBOSAgent' has no permission model
...\pydantic_ai_slim\pydantic_ai\durable_exec\dbos\_agent.py:53
Add role/permission checks before tool dispatch
HIGH D8
Agent class 'PrefectAgent' has no permission model
...dantic_ai_slim\pydantic_ai\durable_exec\prefect\_agent.py:46
Add role/permission checks before tool dispatch
HIGH D8
Agent class 'TemporalAgent' has no permission model
...antic_ai_slim\pydantic_ai\durable_exec\temporal\_agent.py:58
Add role/permission checks before tool dispatch
HIGH D4
Secret used without OIDC — long-lived credential in workflow
...\gallery\repos\pydantic-ai\.github\workflows\after-ci.yml:38
Use OIDC (id-token: write) for cloud auth instead of static secrets
OWASP LLM09
HIGH D4
Secret used without OIDC — long-lived credential in workflow
...rden\gallery\repos\pydantic-ai\.github\workflows\bots.yml:140
Use OIDC (id-token: write) for cloud auth instead of static secrets
OWASP LLM09
HIGH D4
Secret used without OIDC — long-lived credential in workflow
...os\pydantic-ai\.github\workflows\gateway-model-health.yml:25
Use OIDC (id-token: write) for cloud auth instead of static secrets
OWASP LLM09
HIGH D4
Secret used without OIDC — long-lived credential in workflow
...os\pydantic-ai\.github\workflows\manually-deploy-docs.yml:19
Use OIDC (id-token: write) for cloud auth instead of static secrets
OWASP LLM09
HIGH D6
LangChain used without CallbackManager — no tool/chain observability
...den\gallery\repos\pydantic-ai\tests\ext\test_langchain.py:8
Add CallbackManager with on_tool_start/on_chain_start handlers
EU AI Act Article 13
HIGH D10
Azure AI used without ContentSafetyClient — no content moderation
...dantic-ai\pydantic_ai_slim\pydantic_ai\providers\azure.py:21
Add Azure ContentSafetyClient to analyse prompts/responses for harmful content
EU AI Act Article 15OWASP LLM02
HIGH D10
Azure AI used without ContentSafetyClient — no content moderation
...den\gallery\repos\pydantic-ai\tests\models\test_openai.py:68
Add Azure ContentSafetyClient to analyse prompts/responses for harmful content
EU AI Act Article 15OWASP LLM02
HIGH D10
Azure AI used without ContentSafetyClient — no content moderation
...n\gallery\repos\pydantic-ai\tests\providers\test_azure.py:21
Add Azure ContentSafetyClient to analyse prompts/responses for harmful content
EU AI Act Article 15OWASP LLM02
HIGH D17
No behavioral trap detection — post-execution behavioral changes not monitored. (10/10 M365 Copilot attacks succeeded)
Deploy trap defense layer on tool results
EU AI Act Article 14OWASP LLM07MITRE AML.T0051
HIGH D17
No approval integrity verification -- agent summaries for approval not cross-checked against actual actions. (Approval fatigue exploitation)
Deploy trap defense layer on tool results
EU AI Act Article 14OWASP LLM07MITRE AML.T0048
MEDIUM 310
MEDIUM D5
print() used instead of structured logging
...ry\repos\pydantic-ai\.github\set_docs_main_preview_url.py:23
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...ry\repos\pydantic-ai\.github\set_docs_main_preview_url.py:45
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...ry\repos\pydantic-ai\.github\set_docs_main_preview_url.py:56
Use logging.* or structlog.* for structured, searchable logs
Show 307 more MEDIUM findings
MEDIUM D5
print() used instead of structured logging
...lery\repos\pydantic-ai\.github\set_docs_pr_preview_url.py:21
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...lery\repos\pydantic-ai\.github\set_docs_pr_preview_url.py:31
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...lery\repos\pydantic-ai\.github\set_docs_pr_preview_url.py:36
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...lery\repos\pydantic-ai\.github\set_docs_pr_preview_url.py:38
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...lery\repos\pydantic-ai\.github\set_docs_pr_preview_url.py:65
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...lery\repos\pydantic-ai\.github\set_docs_pr_preview_url.py:68
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...lery\repos\pydantic-ai\.github\set_docs_pr_preview_url.py:71
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...s\warden\gallery\repos\pydantic-ai\docs\.hooks\algolia.py:153
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...s\warden\gallery\repos\pydantic-ai\docs\.hooks\algolia.py:156
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...s\warden\gallery\repos\pydantic-ai\docs\.hooks\algolia.py:160
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...s\warden\gallery\repos\pydantic-ai\docs\.hooks\algolia.py:184
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...pydantic-ai\examples\pydantic_ai_examples\bank_support.py:92
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...pydantic-ai\examples\pydantic_ai_examples\bank_support.py:98
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...pydantic-ai\examples\pydantic_ai_examples\data_analyst.py:107
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...dantic-ai\examples\pydantic_ai_examples\flight_booking.py:201
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...dantic-ai\examples\pydantic_ai_examples\flight_booking.py:205
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...dantic-ai\examples\pydantic_ai_examples\flight_booking.py:235
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...dantic-ai\examples\pydantic_ai_examples\flight_booking.py:240
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...dantic-ai\examples\pydantic_ai_examples\pydantic_model.py:26
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...dantic-ai\examples\pydantic_ai_examples\pydantic_model.py:31
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...dantic-ai\examples\pydantic_ai_examples\pydantic_model.py:32
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...dantic-ai\examples\pydantic_ai_examples\question_graph.py:101
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...dantic-ai\examples\pydantic_ai_examples\question_graph.py:115
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...dantic-ai\examples\pydantic_ai_examples\question_graph.py:137
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...dantic-ai\examples\pydantic_ai_examples\question_graph.py:139
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...dantic-ai\examples\pydantic_ai_examples\question_graph.py:140
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...dantic-ai\examples\pydantic_ai_examples\question_graph.py:143
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...dantic-ai\examples\pydantic_ai_examples\question_graph.py:156
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...dantic-ai\examples\pydantic_ai_examples\question_graph.py:168
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...ry\repos\pydantic-ai\examples\pydantic_ai_examples\rag.py:96
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...ry\repos\pydantic-ai\examples\pydantic_ai_examples\rag.py:255
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...dantic-ai\examples\pydantic_ai_examples\roulette_wheel.py:57
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...dantic-ai\examples\pydantic_ai_examples\roulette_wheel.py:63
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...ydantic-ai\examples\pydantic_ai_examples\weather_agent.py:101
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...pos\pydantic-ai\examples\pydantic_ai_examples\__main__.py:42
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...pos\pydantic-ai\examples\pydantic_ai_examples\__main__.py:51
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...pos\pydantic-ai\examples\pydantic_ai_examples\__main__.py:63
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...les\pydantic_ai_examples\evals\example_03_unit_testing.py:30
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D12
Hardcoded model name: 'Acquire a slot, waiting if necessary. Args: source: Identifier for observability (e.g., 'model:gpt-4o'). ' — no routing/fallback
...s\pydantic-ai\pydantic_ai_slim\pydantic_ai\concurrency.py:52
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'Acquire a slot, creating a span if waiting is required. Args: source: Identifier for the source of this acquisition (e.g., 'agent:my-agent' or 'model:gpt-4'). ' — no routing/fallback
...s\pydantic-ai\pydantic_ai_slim\pydantic_ai\concurrency.py:172
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'Get an async context manager for the concurrency limiter. If limiter is None, returns a no-op context manager. Args: limiter: The AbstractConcurrencyLimiter or None. source: Identifier for the source of this acquisition (e.g., 'agent:my-agent' or 'model:gpt-4'). Returns: An async context manager. ' — no routing/fallback
...s\pydantic-ai\pydantic_ai_slim\pydantic_ai\concurrency.py:260
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'anthropic.claude-3-5-sonnet-20241022-v2:0' — no routing/fallback
...ydantic-ai\pydantic_ai_slim\pydantic_ai\models\bedrock.py:144
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'us.anthropic.claude-3-5-sonnet-20241022-v2:0' — no routing/fallback
...ydantic-ai\pydantic_ai_slim\pydantic_ai\models\bedrock.py:145
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'anthropic.claude-3-5-haiku-20241022-v1:0' — no routing/fallback
...ydantic-ai\pydantic_ai_slim\pydantic_ai\models\bedrock.py:146
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'us.anthropic.claude-3-5-haiku-20241022-v1:0' — no routing/fallback
...ydantic-ai\pydantic_ai_slim\pydantic_ai\models\bedrock.py:147
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'anthropic.claude-3-sonnet-20240229-v1:0' — no routing/fallback
...ydantic-ai\pydantic_ai_slim\pydantic_ai\models\bedrock.py:151
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'us.anthropic.claude-3-sonnet-20240229-v1:0' — no routing/fallback
...ydantic-ai\pydantic_ai_slim\pydantic_ai\models\bedrock.py:152
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'anthropic.claude-3-haiku-20240307-v1:0' — no routing/fallback
...ydantic-ai\pydantic_ai_slim\pydantic_ai\models\bedrock.py:153
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'us.anthropic.claude-3-haiku-20240307-v1:0' — no routing/fallback
...ydantic-ai\pydantic_ai_slim\pydantic_ai\models\bedrock.py:154
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'anthropic.claude-3-opus-20240229-v1:0' — no routing/fallback
...ydantic-ai\pydantic_ai_slim\pydantic_ai\models\bedrock.py:155
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'us.anthropic.claude-3-opus-20240229-v1:0' — no routing/fallback
...ydantic-ai\pydantic_ai_slim\pydantic_ai\models\bedrock.py:156
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'anthropic.claude-3-5-sonnet-20240620-v1:0' — no routing/fallback
...ydantic-ai\pydantic_ai_slim\pydantic_ai\models\bedrock.py:157
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'us.anthropic.claude-3-5-sonnet-20240620-v1:0' — no routing/fallback
...ydantic-ai\pydantic_ai_slim\pydantic_ai\models\bedrock.py:158
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'anthropic.claude-3-7-sonnet-20250219-v1:0' — no routing/fallback
...ydantic-ai\pydantic_ai_slim\pydantic_ai\models\bedrock.py:159
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'us.anthropic.claude-3-7-sonnet-20250219-v1:0' — no routing/fallback
...ydantic-ai\pydantic_ai_slim\pydantic_ai\models\bedrock.py:160
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'A model wrapper that limits concurrent requests to the underlying model. This wrapper applies concurrency limiting at the model level, ensuring that the number of concurrent requests to the model does not exceed the configured limit. This is useful for: - Respecting API rate limits - Managing resource usage - Sharing a concurrency pool across multiple models Example usage: ```python from pydantic_ai import Agent from pydantic_ai.models.concurrency import ConcurrencyLimitedModel # Limit to 5 concurrent requests model = ConcurrencyLimitedModel('openai:gpt-4o', limiter=5) agent = Agent(model) # Or share a limiter across multiple models from pydantic_ai import ConcurrencyLimiter # noqa E402 shared_limiter = ConcurrencyLimiter(max_running=10, name='openai-pool') model1 = ConcurrencyLimitedModel('openai:gpt-4o', limiter=shared_limiter) model2 = ConcurrencyLimitedModel('openai:gpt-4o-mini', limiter=shared_limiter) ``` ' — no routing/fallback
...tic-ai\pydantic_ai_slim\pydantic_ai\models\concurrency.py:28
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'Wrap a model with concurrency limiting. This is a convenience function to wrap a model with concurrency limiting. If the limiter is None, the model is returned unchanged. Args: model: The model to wrap. limiter: The concurrency limit configuration. Returns: The wrapped model with concurrency limiting, or the original model if limiter is None. Example: ```python from pydantic_ai.models.concurrency import limit_model_concurrency model = limit_model_concurrency('openai:gpt-4o', limiter=5) ``` ' — no routing/fallback
...tic-ai\pydantic_ai_slim\pydantic_ai\models\concurrency.py:118
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'chatgpt-4o-latest' — no routing/fallback
...pydantic-ai\pydantic_ai_slim\pydantic_ai\models\openai.py:168
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'gpt-4-0125-preview' — no routing/fallback
...pydantic-ai\pydantic_ai_slim\pydantic_ai\models\openai.py:172
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'gpt-4-1106-preview' — no routing/fallback
...pydantic-ai\pydantic_ai_slim\pydantic_ai\models\openai.py:173
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'gpt-4-turbo-preview' — no routing/fallback
...pydantic-ai\pydantic_ai_slim\pydantic_ai\models\openai.py:174
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'gpt-4-32k' — no routing/fallback
...pydantic-ai\pydantic_ai_slim\pydantic_ai\models\openai.py:176
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'gpt-4-32k-0314' — no routing/fallback
...pydantic-ai\pydantic_ai_slim\pydantic_ai\models\openai.py:177
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'gpt-4-32k-0613' — no routing/fallback
...pydantic-ai\pydantic_ai_slim\pydantic_ai\models\openai.py:178
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'gpt-4-vision-preview' — no routing/fallback
...pydantic-ai\pydantic_ai_slim\pydantic_ai\models\openai.py:179
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'gpt-4o-audio-preview-2024-10-01' — no routing/fallback
...pydantic-ai\pydantic_ai_slim\pydantic_ai\models\openai.py:181
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'Compaction capability for OpenAI Responses API. Calls the `responses.compact` endpoint via a `before_model_request` hook when the trigger condition is met. The compacted history replaces the original messages, keeping conversation context within manageable limits. Example usage:: from pydantic_ai import Agent from pydantic_ai.models.openai import OpenAICompaction agent = Agent( 'openai-responses:gpt-4o', capabilities=[OpenAICompaction(message_count_threshold=10)], ) ' — no routing/fallback
...pydantic-ai\pydantic_ai_slim\pydantic_ai\models\openai.py:3151
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'anthropic:claude-3-5-haiku-20241022' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:68
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'anthropic:claude-3-5-haiku-latest' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:69
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'anthropic:claude-3-7-sonnet-20250219' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:70
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'anthropic:claude-3-7-sonnet-latest' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:71
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'anthropic:claude-3-haiku-20240307' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:72
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'anthropic:claude-3-opus-20240229' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:73
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'anthropic:claude-3-opus-latest' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:74
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'bedrock:anthropic.claude-3-5-haiku-20241022-v1:0' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:93
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'bedrock:anthropic.claude-3-5-sonnet-20240620-v1:0' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:94
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'bedrock:anthropic.claude-3-5-sonnet-20241022-v2:0' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:95
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'bedrock:anthropic.claude-3-7-sonnet-20250219-v1:0' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:96
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'bedrock:anthropic.claude-3-haiku-20240307-v1:0' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:97
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'bedrock:anthropic.claude-3-opus-20240229-v1:0' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:98
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'bedrock:anthropic.claude-3-sonnet-20240229-v1:0' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:99
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'bedrock:us.anthropic.claude-3-5-haiku-20241022-v1:0' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:130
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'bedrock:us.anthropic.claude-3-5-sonnet-20240620-v1:0' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:131
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'bedrock:us.anthropic.claude-3-5-sonnet-20241022-v2:0' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:132
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'bedrock:us.anthropic.claude-3-7-sonnet-20250219-v1:0' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:133
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'bedrock:us.anthropic.claude-3-haiku-20240307-v1:0' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:134
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'bedrock:us.anthropic.claude-3-opus-20240229-v1:0' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:135
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'bedrock:us.anthropic.claude-3-sonnet-20240229-v1:0' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:136
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'gateway/anthropic:claude-3-haiku-20240307' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:161
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'gateway/bedrock:anthropic.claude-3-5-sonnet-20240620-v1:0' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:177
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'gateway/bedrock:anthropic.claude-3-haiku-20240307-v1:0' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:178
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'gateway/openai:gpt-3.5-turbo-0125' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:201
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'gateway/openai:gpt-3.5-turbo-1106' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:202
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'gateway/openai:gpt-3.5-turbo-16k' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:203
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'gateway/openai:gpt-3.5-turbo' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:204
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'gateway/openai:gpt-4-0613' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:205
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'gateway/openai:gpt-4-turbo-2024-04-09' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:206
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'gateway/openai:gpt-4-turbo' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:207
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'gateway/openai:gpt-4.1-2025-04-14' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:208
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'gateway/openai:gpt-4.1-mini-2025-04-14' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:209
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'gateway/openai:gpt-4.1-mini' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:210
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'gateway/openai:gpt-4.1-nano-2025-04-14' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:211
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'gateway/openai:gpt-4.1-nano' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:212
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'gateway/openai:gpt-4.1' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:213
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'gateway/openai:gpt-4' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:214
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'gateway/openai:gpt-4o-2024-05-13' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:215
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'gateway/openai:gpt-4o-2024-08-06' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:216
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'gateway/openai:gpt-4o-2024-11-20' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:217
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'gateway/openai:gpt-4o-mini-2024-07-18' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:218
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'gateway/openai:gpt-4o-mini-search-preview-2025-03-11' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:219
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'gateway/openai:gpt-4o-mini-search-preview' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:220
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'gateway/openai:gpt-4o-mini' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:221
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'gateway/openai:gpt-4o-search-preview-2025-03-11' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:222
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'gateway/openai:gpt-4o-search-preview' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:223
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'gateway/openai:gpt-4o' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:224
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'heroku:claude-3-5-haiku' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:336
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'heroku:claude-3-5-sonnet-latest' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:337
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'heroku:claude-3-7-sonnet' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:338
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'heroku:claude-3-haiku' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:339
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'openai:gpt-3.5-turbo-0125' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:382
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'openai:gpt-3.5-turbo-0301' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:383
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'openai:gpt-3.5-turbo-0613' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:384
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'openai:gpt-3.5-turbo-1106' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:385
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'openai:gpt-3.5-turbo-16k-0613' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:386
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'openai:gpt-3.5-turbo-16k' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:387
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'openai:gpt-3.5-turbo' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:388
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'openai:gpt-4-0314' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:389
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'openai:gpt-4-0613' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:390
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'openai:gpt-4-turbo-2024-04-09' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:391
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'openai:gpt-4-turbo' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:392
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'openai:gpt-4.1-2025-04-14' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:393
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'openai:gpt-4.1-mini-2025-04-14' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:394
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'openai:gpt-4.1-mini' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:395
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'openai:gpt-4.1-nano-2025-04-14' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:396
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'openai:gpt-4.1-nano' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:397
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'openai:gpt-4.1' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:398
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'openai:gpt-4' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:399
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'openai:gpt-4o-2024-05-13' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:400
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'openai:gpt-4o-2024-08-06' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:401
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'openai:gpt-4o-2024-11-20' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:402
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'openai:gpt-4o-audio-preview-2024-12-17' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:403
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'openai:gpt-4o-audio-preview-2025-06-03' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:404
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'openai:gpt-4o-audio-preview' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:405
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'openai:gpt-4o-mini-2024-07-18' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:406
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'openai:gpt-4o-mini-audio-preview-2024-12-17' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:407
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'openai:gpt-4o-mini-audio-preview' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:408
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'openai:gpt-4o-mini-search-preview-2025-03-11' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:409
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'openai:gpt-4o-mini-search-preview' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:410
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'openai:gpt-4o-mini' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:411
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'openai:gpt-4o-search-preview-2025-03-11' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:412
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'openai:gpt-4o-search-preview' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:413
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'openai:gpt-4o' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:414
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'Backward compat: allows prefix-only model names like `gpt-4` without `provider:`.' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:1171
Use model routing or configuration instead of hardcoded names
MEDIUM D12
Hardcoded model name: 'Parse a model id string into its provider and model name components. Handles both the modern `provider:model` format and legacy model names that start with known prefixes (e.g., `gpt-4`, `claude-3`). Emits a `DeprecationWarning` when a legacy prefix-based model name is used. Args: model: A model identifier string, either `provider:model_name` or a legacy prefix-based name. Returns: A tuple of `(provider_name, model_name)`. If the provider can't be inferred, returns `(None, model)` so callers can decide how to handle unknown providers. ' — no routing/fallback
...dantic-ai\pydantic_ai_slim\pydantic_ai\models\__init__.py:1175
Use model routing or configuration instead of hardcoded names
MEDIUM D5
print() used instead of structured logging
...s\pydantic-ai\pydantic_evals\pydantic_evals\generation.py:84
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...rden\gallery\repos\pydantic-ai\scripts\check_cassettes.py:115
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...rden\gallery\repos\pydantic-ai\scripts\check_cassettes.py:118
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...rden\gallery\repos\pydantic-ai\scripts\check_cassettes.py:120
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...rden\gallery\repos\pydantic-ai\scripts\check_cassettes.py:123
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...rden\gallery\repos\pydantic-ai\scripts\check_cassettes.py:132
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...rden\gallery\repos\pydantic-ai\scripts\check_cassettes.py:141
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...rden\gallery\repos\pydantic-ai\scripts\check_cassettes.py:145
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...rden\gallery\repos\pydantic-ai\scripts\check_cassettes.py:146
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...rden\gallery\repos\pydantic-ai\scripts\check_cassettes.py:149
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...rden\gallery\repos\pydantic-ai\scripts\check_cassettes.py:150
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...rden\gallery\repos\pydantic-ai\scripts\check_cassettes.py:152
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...rden\gallery\repos\pydantic-ai\scripts\check_cassettes.py:153
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...rden\gallery\repos\pydantic-ai\scripts\check_cassettes.py:154
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...rden\gallery\repos\pydantic-ai\scripts\check_cassettes.py:155
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...rden\gallery\repos\pydantic-ai\scripts\check_cassettes.py:158
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...arden\gallery\repos\pydantic-ai\scripts\scrub_cassette.py:25
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...arden\gallery\repos\pydantic-ai\scripts\scrub_cassette.py:27
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...en\gallery\repos\pydantic-ai\scripts\upload_test_files.py:25
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...en\gallery\repos\pydantic-ai\scripts\upload_test_files.py:31
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...en\gallery\repos\pydantic-ai\scripts\upload_test_files.py:41
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...en\gallery\repos\pydantic-ai\scripts\upload_test_files.py:45
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...en\gallery\repos\pydantic-ai\scripts\upload_test_files.py:60
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...en\gallery\repos\pydantic-ai\scripts\upload_test_files.py:66
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...en\gallery\repos\pydantic-ai\scripts\upload_test_files.py:86
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...en\gallery\repos\pydantic-ai\scripts\upload_test_files.py:106
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...en\gallery\repos\pydantic-ai\scripts\upload_test_files.py:129
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...en\gallery\repos\pydantic-ai\scripts\upload_test_files.py:136
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...en\gallery\repos\pydantic-ai\scripts\upload_test_files.py:150
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...allery\repos\pydantic-ai\scripts\verify_bedrock_access.py:17
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...allery\repos\pydantic-ai\scripts\verify_bedrock_access.py:18
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...allery\repos\pydantic-ai\scripts\verify_bedrock_access.py:19
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...allery\repos\pydantic-ai\scripts\verify_bedrock_access.py:20
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...allery\repos\pydantic-ai\scripts\verify_bedrock_access.py:23
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...allery\repos\pydantic-ai\scripts\verify_bedrock_access.py:29
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...allery\repos\pydantic-ai\scripts\verify_bedrock_access.py:31
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...allery\repos\pydantic-ai\scripts\verify_bedrock_access.py:33
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...allery\repos\pydantic-ai\scripts\verify_bedrock_access.py:36
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...allery\repos\pydantic-ai\scripts\verify_bedrock_access.py:37
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...allery\repos\pydantic-ai\scripts\verify_bedrock_access.py:51
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...allery\repos\pydantic-ai\scripts\verify_bedrock_access.py:53
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...allery\repos\pydantic-ai\scripts\verify_bedrock_access.py:56
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...allery\repos\pydantic-ai\scripts\verify_bedrock_access.py:57
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...allery\repos\pydantic-ai\scripts\verify_bedrock_access.py:94
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...allery\repos\pydantic-ai\scripts\verify_bedrock_access.py:96
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...en\gallery\repos\pydantic-ai\scripts\verify_vertex_gcs.py:52
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...en\gallery\repos\pydantic-ai\scripts\verify_vertex_gcs.py:54
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...en\gallery\repos\pydantic-ai\scripts\verify_vertex_gcs.py:58
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...en\gallery\repos\pydantic-ai\scripts\verify_vertex_gcs.py:59
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...en\gallery\repos\pydantic-ai\scripts\verify_vertex_gcs.py:60
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...\repos\pydantic-ai\scripts\verify_vertex_gcs_all_types.py:64
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...\repos\pydantic-ai\scripts\verify_vertex_gcs_all_types.py:66
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...\repos\pydantic-ai\scripts\verify_vertex_gcs_all_types.py:70
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...\repos\pydantic-ai\scripts\verify_vertex_gcs_all_types.py:71
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...\repos\pydantic-ai\scripts\verify_vertex_gcs_all_types.py:72
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...epos\pydantic-ai\scripts\verify_vertex_gcs_tool_result.py:62
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...epos\pydantic-ai\scripts\verify_vertex_gcs_tool_result.py:64
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...epos\pydantic-ai\scripts\verify_vertex_gcs_tool_result.py:91
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
print() used instead of structured logging
...epos\pydantic-ai\scripts\verify_vertex_gcs_tool_result.py:93
Use logging.* or structlog.* for structured, searchable logs
MEDIUM D5
JavaScript: Console logging with potential sensitive data
...pos\pydantic-ai\examples\pydantic_ai_examples\chat_app.ts:31
Use structured logging and redact sensitive fields
MEDIUM D4
Exposed Generic Secret: api...-key
...Projects\warden\gallery\repos\pydantic-ai\docs\retries.md:297
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...v...
...Projects\warden\gallery\repos\pydantic-ai\docs\gateway.md:120
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...v...
...Projects\warden\gallery\repos\pydantic-ai\docs\gateway.md:142
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...v...
...Projects\warden\gallery\repos\pydantic-ai\docs\gateway.md:238
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...v...
...Projects\warden\gallery\repos\pydantic-ai\docs\gateway.md:256
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: tok...v...
...Projects\warden\gallery\repos\pydantic-ai\docs\gateway.md:278
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: tok...v...
...Projects\warden\gallery\repos\pydantic-ai\docs\gateway.md:297
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...-key
...jects\warden\gallery\repos\pydantic-ai\docs\embeddings.md:157
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...-key
...jects\warden\gallery\repos\pydantic-ai\docs\embeddings.md:171
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...-key
...\warden\gallery\repos\pydantic-ai\docs\models\cerebras.md:55
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...-key
...\warden\gallery\repos\pydantic-ai\docs\models\cerebras.md:73
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...-key
...s\warden\gallery\repos\pydantic-ai\docs\models\mistral.md:55
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...-key
...s\warden\gallery\repos\pydantic-ai\docs\models\mistral.md:73
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...-key
...warden\gallery\repos\pydantic-ai\docs\models\anthropic.md:55
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...-key
...warden\gallery\repos\pydantic-ai\docs\models\anthropic.md:75
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...-key
...warden\gallery\repos\pydantic-ai\docs\models\anthropic.md:139
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...-key
...ts\warden\gallery\repos\pydantic-ai\docs\models\cohere.md:54
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...-key
...ts\warden\gallery\repos\pydantic-ai\docs\models\cohere.md:71
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...-key
...ects\warden\gallery\repos\pydantic-ai\docs\models\groq.md:55
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...-key
...ects\warden\gallery\repos\pydantic-ai\docs\models\groq.md:73
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...-key
...ts\warden\gallery\repos\pydantic-ai\docs\models\openai.md:55
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...-key
...ts\warden\gallery\repos\pydantic-ai\docs\models\openai.md:90
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...-key
...ts\warden\gallery\repos\pydantic-ai\docs\models\openai.md:251
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...-key
...ts\warden\gallery\repos\pydantic-ai\docs\models\openai.md:277
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...-key
...ts\warden\gallery\repos\pydantic-ai\docs\models\openai.md:309
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...-key
...ts\warden\gallery\repos\pydantic-ai\docs\models\openai.md:328
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...-key
...ts\warden\gallery\repos\pydantic-ai\docs\models\openai.md:355
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...-key
...ts\warden\gallery\repos\pydantic-ai\docs\models\openai.md:371
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...-key
...ts\warden\gallery\repos\pydantic-ai\docs\models\openai.md:448
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...-key
...ts\warden\gallery\repos\pydantic-ai\docs\models\openai.md:503
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...-key
...ts\warden\gallery\repos\pydantic-ai\docs\models\openai.md:531
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...oken
...ts\warden\gallery\repos\pydantic-ai\docs\models\openai.md:559
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...-key
...ts\warden\gallery\repos\pydantic-ai\docs\models\openai.md:581
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...-key
...ts\warden\gallery\repos\pydantic-ai\docs\models\openai.md:610
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...-key
...ts\warden\gallery\repos\pydantic-ai\docs\models\openai.md:638
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...-key
...ts\warden\gallery\repos\pydantic-ai\docs\models\openai.md:666
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...key>
...ts\warden\gallery\repos\pydantic-ai\docs\models\openai.md:689
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...-key
...ts\warden\gallery\repos\pydantic-ai\docs\models\openai.md:724
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...-key
...ts\warden\gallery\repos\pydantic-ai\docs\models\openai.md:758
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...-key
...ts\warden\gallery\repos\pydantic-ai\docs\models\openai.md:792
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...-key
...ts\warden\gallery\repos\pydantic-ai\docs\models\openai.md:812
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...oken
...rden\gallery\repos\pydantic-ai\docs\models\huggingface.md:64
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...oken
...rden\gallery\repos\pydantic-ai\docs\models\huggingface.md:85
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...-key
...ts\warden\gallery\repos\pydantic-ai\docs\models\google.md:45
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...-key
...ts\warden\gallery\repos\pydantic-ai\docs\models\google.md:135
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...-key
...ts\warden\gallery\repos\pydantic-ai\docs\models\google.md:216
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...-key
...jects\warden\gallery\repos\pydantic-ai\docs\models\xai.md:54
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...-key
...jects\warden\gallery\repos\pydantic-ai\docs\models\xai.md:69
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...-key
...arden\gallery\repos\pydantic-ai\docs\models\openrouter.md:33
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...-key
...arden\gallery\repos\pydantic-ai\docs\models\openrouter.md:49
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...-key
...antic-ai\pydantic_ai_slim\pydantic_ai\common_tools\exa.py:417
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D4
Exposed Generic Secret: api...-set
...antic-ai\pydantic_ai_slim\pydantic_ai\providers\openai.py:75
Move to secrets manager or .env file (excluded from VCS)
EU AI Act Article 15OWASP LLM09
MEDIUM D8
Agent class 'WrapperAgent' has no defined lifecycle states
...pydantic-ai\pydantic_ai_slim\pydantic_ai\agent\wrapper.py:32
Add state machine (ACTIVE/SUSPENDED/RETIRED) for agent lifecycle
MEDIUM D8
Agent class 'DBOSAgent' has no defined lifecycle states
...\pydantic_ai_slim\pydantic_ai\durable_exec\dbos\_agent.py:53
Add state machine (ACTIVE/SUSPENDED/RETIRED) for agent lifecycle
MEDIUM D8
Agent class 'PrefectAgent' has no defined lifecycle states
...dantic_ai_slim\pydantic_ai\durable_exec\prefect\_agent.py:46
Add state machine (ACTIVE/SUSPENDED/RETIRED) for agent lifecycle
MEDIUM D8
Agent class 'TemporalAgent' has no defined lifecycle states
...antic_ai_slim\pydantic_ai\durable_exec\temporal\_agent.py:58
Add state machine (ACTIVE/SUSPENDED/RETIRED) for agent lifecycle
MEDIUM D3
No concurrency block — parallel deployments possible
...\gallery\repos\pydantic-ai\.github\workflows\after-ci.yml:1
Add concurrency: group with cancel-in-progress to prevent parallel deploys
MEDIUM D3
No concurrency block — parallel deployments possible
...gallery\repos\pydantic-ai\.github\workflows\at-claude.yml:1
Add concurrency: group with cancel-in-progress to prevent parallel deploys
MEDIUM D14
Push trigger without branch protection guard
...gallery\repos\pydantic-ai\.github\workflows\at-claude.yml:1
Add if: github.ref == 'refs/heads/main' or restrict push trigger branches
MEDIUM D3
No concurrency block — parallel deployments possible
...warden\gallery\repos\pydantic-ai\.github\workflows\ci.yml:1
Add concurrency: group with cancel-in-progress to prevent parallel deploys
MEDIUM D14
Push trigger without branch protection guard
...warden\gallery\repos\pydantic-ai\.github\workflows\ci.yml:1
Add if: github.ref == 'refs/heads/main' or restrict push trigger branches
MEDIUM D3
No concurrency block — parallel deployments possible
...os\pydantic-ai\.github\workflows\gateway-model-health.yml:1
Add concurrency: group with cancel-in-progress to prevent parallel deploys
MEDIUM D3
No concurrency block — parallel deployments possible
...os\pydantic-ai\.github\workflows\manually-deploy-docs.yml:1
Add concurrency: group with cancel-in-progress to prevent parallel deploys
MEDIUM D3
No concurrency block — parallel deployments possible
...den\gallery\repos\pydantic-ai\.github\workflows\stale.yml:1
Add concurrency: group with cancel-in-progress to prevent parallel deploys
MEDIUM D3
No .github/CODEOWNERS file — no code ownership enforcement
Add CODEOWNERS to enforce review requirements per path
EU AI Act Article 9
MEDIUM D1
Cloud AI endpoint URL hardcoded in source — hinders environment portability
...pydantic-ai\pydantic_ai_slim\pydantic_ai\models\google.py:924
Move AI service endpoints to environment variables or configuration files
OWASP LLM06
MEDIUM D1
Cloud AI endpoint URL hardcoded in source — hinders environment portability
...c-ai\pydantic_ai_slim\pydantic_ai\providers\google_gla.py:25
Move AI service endpoints to environment variables or configuration files
OWASP LLM06
MEDIUM D1
Cloud AI endpoint URL hardcoded in source — hinders environment portability
...ects\warden\gallery\repos\pydantic-ai\tests\test_agent.py:6450
Move AI service endpoints to environment variables or configuration files
OWASP LLM06
MEDIUM D1
Cloud AI endpoint URL hardcoded in source — hinders environment portability
...jects\warden\gallery\repos\pydantic-ai\tests\test_dbos.py:1197
Move AI service endpoints to environment variables or configuration files
OWASP LLM06
MEDIUM D1
Cloud AI endpoint URL hardcoded in source — hinders environment portability
...warden\gallery\repos\pydantic-ai\tests\test_embeddings.py:100
Move AI service endpoints to environment variables or configuration files
OWASP LLM06
MEDIUM D1
Cloud AI endpoint URL hardcoded in source — hinders environment portability
...s\warden\gallery\repos\pydantic-ai\tests\test_examples.py:200
Move AI service endpoints to environment variables or configuration files
OWASP LLM06
MEDIUM D1
Cloud AI endpoint URL hardcoded in source — hinders environment portability
...ojects\warden\gallery\repos\pydantic-ai\tests\test_mcp.py:367
Move AI service endpoints to environment variables or configuration files
OWASP LLM06
MEDIUM D1
Cloud AI endpoint URL hardcoded in source — hinders environment portability
...s\warden\gallery\repos\pydantic-ai\tests\test_messages.py:845
Move AI service endpoints to environment variables or configuration files
OWASP LLM06
MEDIUM D1
Cloud AI endpoint URL hardcoded in source — hinders environment portability
...\gallery\repos\pydantic-ai\tests\test_streaming_errors.py:241
Move AI service endpoints to environment variables or configuration files
OWASP LLM06
MEDIUM D1
Cloud AI endpoint URL hardcoded in source — hinders environment portability
...s\warden\gallery\repos\pydantic-ai\tests\test_temporal.py:2216
Move AI service endpoints to environment variables or configuration files
OWASP LLM06
MEDIUM D1
Cloud AI endpoint URL hardcoded in source — hinders environment portability
...den\gallery\repos\pydantic-ai\tests\models\mock_openai.py:34
Move AI service endpoints to environment variables or configuration files
OWASP LLM06
MEDIUM D1
Cloud AI endpoint URL hardcoded in source — hinders environment portability
...\gallery\repos\pydantic-ai\tests\models\test_anthropic.py:139
Move AI service endpoints to environment variables or configuration files
OWASP LLM06
MEDIUM D1
Cloud AI endpoint URL hardcoded in source — hinders environment portability
...en\gallery\repos\pydantic-ai\tests\models\test_bedrock.py:132
Move AI service endpoints to environment variables or configuration files
OWASP LLM06
MEDIUM D1
Cloud AI endpoint URL hardcoded in source — hinders environment portability
...den\gallery\repos\pydantic-ai\tests\models\test_cohere.py:571
Move AI service endpoints to environment variables or configuration files
OWASP LLM06
MEDIUM D1
Cloud AI endpoint URL hardcoded in source — hinders environment portability
...den\gallery\repos\pydantic-ai\tests\models\test_gemini.py:572
Move AI service endpoints to environment variables or configuration files
OWASP LLM06
MEDIUM D1
Cloud AI endpoint URL hardcoded in source — hinders environment portability
...den\gallery\repos\pydantic-ai\tests\models\test_google.py:142
Move AI service endpoints to environment variables or configuration files
OWASP LLM06
MEDIUM D1
Cloud AI endpoint URL hardcoded in source — hinders environment portability
...llery\repos\pydantic-ai\tests\models\test_instrumented.py:138
Move AI service endpoints to environment variables or configuration files
OWASP LLM06
MEDIUM D1
Cloud AI endpoint URL hardcoded in source — hinders environment portability
...en\gallery\repos\pydantic-ai\tests\models\test_mistral.py:2445
Move AI service endpoints to environment variables or configuration files
OWASP LLM06
MEDIUM D1
Cloud AI endpoint URL hardcoded in source — hinders environment portability
...\pydantic-ai\tests\models\test_multimodal_tool_returns.py:326
Move AI service endpoints to environment variables or configuration files
OWASP LLM06
MEDIUM D1
Cloud AI endpoint URL hardcoded in source — hinders environment portability
...den\gallery\repos\pydantic-ai\tests\models\test_openai.py:111
Move AI service endpoints to environment variables or configuration files
OWASP LLM06
MEDIUM D1
Cloud AI endpoint URL hardcoded in source — hinders environment portability
...y\repos\pydantic-ai\tests\models\test_openai_responses.py:110
Move AI service endpoints to environment variables or configuration files
OWASP LLM06
MEDIUM D1
Cloud AI endpoint URL hardcoded in source — hinders environment portability
...llery\repos\pydantic-ai\tests\providers\test_anthropic.py:19
Move AI service endpoints to environment variables or configuration files
OWASP LLM06
MEDIUM D1
Cloud AI endpoint URL hardcoded in source — hinders environment portability
...n\gallery\repos\pydantic-ai\tests\providers\test_azure.py:36
Move AI service endpoints to environment variables or configuration files
OWASP LLM06
MEDIUM D1
Cloud AI endpoint URL hardcoded in source — hinders environment portability
...gallery\repos\pydantic-ai\tests\providers\test_bedrock.py:39
Move AI service endpoints to environment variables or configuration files
OWASP LLM06
MEDIUM D1
Cloud AI endpoint URL hardcoded in source — hinders environment portability
...lery\repos\pydantic-ai\tests\providers\test_google_gla.py:20
Move AI service endpoints to environment variables or configuration files
OWASP LLM06
MEDIUM D17
No adversarial testing evidence — no red team, no prompt injection tests
Implement adversarial testing for agent systems
MEDIUM D17
No tool-call attack simulation — agent tool calls not tested against adversarial inputs
Implement adversarial testing for agent systems
MEDIUM D17
No multi-agent chaos engineering — agent swarms not stress tested
Implement adversarial testing for agent systems
LOW 5
LOW D14
No environment: block — no required reviewers for deployments
...gallery\repos\pydantic-ai\.github\workflows\at-claude.yml:1
Add environment: production with required reviewers in GitHub settings
EU AI Act Article 14
LOW D14
No environment: block — no required reviewers for deployments
...rden\gallery\repos\pydantic-ai\.github\workflows\bots.yml:1
Add environment: production with required reviewers in GitHub settings
EU AI Act Article 14
LOW D14
No environment: block — no required reviewers for deployments
...os\pydantic-ai\.github\workflows\manually-deploy-docs.yml:1
Add environment: production with required reviewers in GitHub settings
EU AI Act Article 14
Show 2 more LOW findings
LOW D14
No environment: block — no required reviewers for deployments
...\gallery\repos\pydantic-ai\.github\workflows\pr-guard.yml:1
Add environment: production with required reviewers in GitHub settings
EU AI Act Article 14
LOW D14
No environment: block — no required reviewers for deployments
...den\gallery\repos\pydantic-ai\.github\workflows\stale.yml:1
Add environment: production with required reviewers in GitHub settings
EU AI Act Article 14
💡 Recommendationsordered by score impact
#1
Deploy risk classification for tool calls +20 pts
No risk scoring on tool invocations. Every tool call carries the same implicit trust level. Classify tools by risk (destructive, financial, exfiltration) and enforce approval gates for high-risk categories. (9 findings in this dimension)
⚠ The Workaround Tax
Stop paying the Workaround Tax. Relying on prompt-filters and out-of-band monitoring forces your developers to write manual security logic scattered across every agent and service. A centralized gateway enforces policy automatically — at the interception layer, on every tool call, without code changes in your agents.
Current state
24/ 100
✗ UNGOVERNED
D2 Risk Detection
0/20
D4 Credential Management
0/20
D9 Threat Detection
0/20
D1 Tool Inventory
7/25
D3 Policy Coverage
5/20
+ SharkRouter (full deployment)
91/ 100
✓ GOVERNED
D2 Risk Detection
18 +18
D4 Credential Management
18 +18
D9 Threat Detection
18 +18
D1 Tool Inventory
23 +16
D3 Policy Coverage
18 +13
* Projection based on SharkRouter's estimated score. Actual results may vary.  sharkrouter.ai → 24 → 91 · +67 pts
#2
Move credentials to a secrets manager +20 pts
API keys or credentials found in source code. Move to HashiCorp Vault, AWS Secrets Manager, or environment-level secret stores. Rotate all exposed keys immediately. Add .env to .gitignore. (60 findings in this dimension)
#3
Deploy behavioral detection and kill switch +20 pts
No behavioral baselines, no anomaly detection, no auto-suspend capability. A compromised agent can operate indefinitely. Salami slicing across sessions is undetectable. (38 findings in this dimension)
#4
Establish a live tool inventory +18 pts
No tool catalog detected. Without a centralized inventory of MCP tools and their schemas, governance policies have nothing to enforce against. Deploy a tool registry with auto-discovery. (25 findings in this dimension)
#5
Implement policy enforcement on tool calls +15 pts
No deny/allow/audit policies detected. Agents can invoke any tool without restriction. Deploy an inline policy engine with deny-by-default for destructive and financial tools. (8 findings in this dimension)
Generated by Warden v1.6.0 · Open Source · MIT License · github.com/sharkrouter/warden
Scoring model v4.3 · 17 weighted dimensions · 235 pts · methodology in SCORING.md
Scan data stays on your machine. Email delivery is opt-in only.
When opted in: score + metadata only. Never: keys, logs, paths, or PII.
Privacy policy · To enforce policies on what Warden found → Explore what 91/100 looks like →