Skip to main content
Drako enforces 97 deterministic rules across 16 categories. Every rule runs offline — no LLM in the evaluation loop. Same code, same result, every time.

Scoring

Scores start at 100 and deduct per finding, with caps per category to prevent one domain from dominating the result.
SeverityPoints per findingCategory cap
CRITICAL−15−60
HIGH−8−40
MEDIUM−3−20
LOW−1−10

Grades

GradeScore range
A90–100
B75–89
C60–74
D40–59
F0–39
Drako produces two independent scores: Governance (are your agents safe?) and Determinism (will they behave consistently?). Both use the same 0–100 scale and grading system.

Categories overview

Security

SEC-001 → SEC-011 — Hardcoded secrets, prompt injection, code execution, filesystem and network access.

Governance

GOV-001 → GOV-011 — Audit logging, human-in-the-loop, self-modifying prompts, fallback logic.

Compliance

COM-001 → COM-005 — EU AI Act Articles 9, 11, 12, and 14 gaps.

Determinism

DET-001 → DET-007 — Temperature, timeouts, retries, iteration limits, seeds.

Vendor concentration

VCR-001 → VCR-003 — Same vendor across model, framework, cloud, and governance layers.

Framework-specific

FW-001 → FW-010 — CrewAI delegation, AutoGen code execution defaults, LangGraph state.

Operational boundaries

ODD-001 → ODD-004 — Boundary definitions, unrestricted tools, spend caps.

Magnitude

MAG-001 → MAG-003 — Spend caps, rate limits, unclassified data access.

Identity

ID-001 → ID-003 — Static credentials, shared credentials, missing identity.

Multi-agent

MULTI-001 → MULTI-004 — Topology monitoring, circular dependencies, contention protection.

Hooks

HOOK-001 → HOOK-003 — Pre-action validation, session-end gates, hook timeouts.

Versioning

CV-001 → CV-002 — Policy versioning, audit log policy references.

FinOps

FIN-001 → FIN-003 — Cost tracking, model selection, response caching.

Resilience

RES-001 → RES-002 — Fallbacks for critical ops, state preservation.

A2A

A2A-001 → A2A-003 — Agent-to-agent auth, inter-agent input validation.

Best practices

BP-001 → BP-005 — Framework versions, test coverage, tool count.

Rules by category

Security rules detect risks that expose your agent system to direct attack or compromise. These span credential management, injection vectors, input/output handling, and code execution.
Rule IDSeverityWhat it checks
SEC-001CRITICALAPI key hardcoded in source code
SEC-002CRITICALSecrets in prompts or configuration
SEC-003HIGHUnrestricted filesystem access in tool
SEC-004HIGHUnrestricted network access in tool
SEC-005CRITICALArbitrary code execution in tool (exec, eval, os.system)
SEC-006MEDIUMNo input validation on tool parameters
SEC-007HIGHPrompt injection vulnerability (user input in f-strings)
SEC-008CRITICALNo input sanitization on tool results from external sources
SEC-009HIGHAgent processes untrusted external data in prompt context
SEC-010HIGHNo prompt injection defense configured
SEC-011HIGHNo intent verification on high-impact actions
Standards referenced: CWE-798, CWE-22, CWE-918, CWE-94, CWE-20, CWE-74, CWE-79, CWE-352, OWASP Top 10 for LLM, NIST AI RMFRelated advisories: DRAKO-ABSS-2026-001 (Prompt Injection), DRAKO-ABSS-2026-006 (Sensitive Information Disclosure), DRAKO-ABSS-2026-007 (Insecure Plugin Design)
Governance rules detect missing controls for observing, limiting, and overseeing agent behavior in production.
Rule IDSeverityWhat it checks
GOV-001HIGHNo audit logging configured
GOV-002MEDIUMNo policy enforcement middleware
GOV-003MEDIUMNo rate limiting on tool calls
GOV-004HIGHNo human-in-the-loop for destructive actions
GOV-005MEDIUMNo circuit breaker configured
GOV-006CRITICALAgent can modify its own system prompt at runtime
GOV-007MEDIUMNo per-tool failure handling
GOV-008HIGHNo fallback for critical tools (payment, write, execute, deploy)
GOV-009CRITICALAgent can execute destructive actions autonomously
GOV-010HIGHNo escalation path defined
GOV-011HIGHAction replay vulnerability — no nonce or idempotency key
Standards referenced: EU AI Act Art. 12, 14; NIST AI RMF GV-1.1, GV-1.5, GV-4.1, MS-2.5, MS-2.7; CWE-284, CWE-294, CWE-755, CWE-770Related advisories: DRAKO-ABSS-2026-008 (Excessive Agency), DRAKO-ABSS-2026-025 (Tool-Abuse Injection)
Compliance rules detect gaps against specific EU AI Act articles. High-risk system requirements take effect August 2, 2026.
Rule IDSeverityWhat it checks
COM-001HIGHNo automatic logging (EU AI Act Art. 12)
COM-002HIGHNo human oversight mechanism (EU AI Act Art. 14)
COM-003MEDIUMNo technical documentation (EU AI Act Art. 11)
COM-004MEDIUMNo risk management documentation (EU AI Act Art. 9)
COM-005MEDIUMNo Agent BOM / inventory maintained (EU AI Act Art. 11)
The source repo’s docs/rules/index.md lists COM-001 through COM-006. The sixth compliance rule (COM-006) covers the absence of a HITL checkpoint for high-risk actions (CRITICAL, EU AI Act Art. 14).
Standards referenced: EU AI Act Art. 9, 11, 12, 14
Determinism rules detect configurations that make agent behavior unpredictable or unrepeatable. These findings feed the separate Determinism score.
Rule IDSeverityWhat it checks
DET-001MEDIUMLLM temperature not explicitly set
DET-002MEDIUMNo timeout configured on LLM calls
DET-003LOWNo retry logic on LLM calls
DET-004MEDIUMNo iteration limit on agent loops
DET-005LOWNo random seed set
DET-006MEDIUMNo output schema validation
DET-007LOWNon-deterministic tool ordering
Standards referenced: NIST AI RMF MS-2.5, MS-2.7
Vendor concentration rules detect when your model, framework, and governance layers all come from the same vendor — flagging audit independence risk that vendor-affiliated tools have no incentive to report.
Rule IDSeverityWhat it checks
VCR-001MEDIUMSame vendor for model and framework layer
VCR-002MEDIUMSame vendor for framework and cloud infrastructure
VCR-003HIGHSame vendor across model, framework, cloud, and governance
Standards referenced: NIST AI RMF GV-1.3, EU AI Act Art. 9
Framework-specific rules detect known governance gaps in the frameworks you use, including default configurations that ship insecure.
Rule IDSeverityFrameworkWhat it checks
FW-001HIGHCrewAIUnrestricted code execution via allow_code_execution
FW-002HIGHCrewAINo memory isolation between agents
FW-003MEDIUMCrewAIUncontrolled delegation (allow_delegation=True by default)
FW-004HIGHLangGraphUnrestricted ToolNode without allowlist
FW-005MEDIUMLangGraphNo checkpointing (MemorySaver or equivalent)
FW-006CRITICALAutoGenLocalCommandLineCodeExecutor without Docker sandboxing
FW-007HIGHAutoGenNo output validation on code executor results
FW-008HIGHSemantic KernelAuto-imported plugins without permission review
FW-009MEDIUMSemantic KernelNo cost guard on planner invocations
FW-010LOWPydanticAIUntyped tool return values
Related advisories: DRAKO-ABSS-2026-016 (CrewAI Tool Output Injection), DRAKO-ABSS-2026-017 (LangChain Unsafe Deserialization), DRAKO-ABSS-2026-018 (AutoGen Unrestricted Code Execution), DRAKO-ABSS-2026-020 (CrewAI Delegation Hijacking)
Operational boundary rules detect when agents lack defined Operational Design Domains (ODDs) — explicit limits on where, when, and how an agent can act.
Rule IDSeverityWhat it checks
ODD-001CRITICALNo operational boundary definition (no ODD configured)
ODD-002HIGHUnrestricted tool access — no per-agent allowlist
ODD-003HIGHNo spend cap (no max_tokens or budget limit)
ODD-004MEDIUMNo time constraints (timeout, max_iterations, time_limit)
Standards referenced: NIST AI RMF GV-1.1, GV-1.3; CWE-269, CWE-400
Magnitude rules detect missing financial and operational ceilings. Without magnitude limits, a compromised or runaway agent has unbounded access to spend, compute, and data.
Rule IDSeverityWhat it checks
MAG-001CRITICALNo spend cap defined (no daily/monthly budget in .drako.yaml)
MAG-002HIGHNo rate limit defined on agent iterations or tool calls
MAG-003HIGHSensitive data access without clearance or classification
Standards referenced: NIST AI RMF MS-2.7; CWE-269, CWE-770Related advisories: DRAKO-ABSS-2026-004 (Model DoS via Resource Exhaustion), DRAKO-ABSS-2026-010 (Unbounded Consumption)
Identity rules detect credential management problems that prevent per-agent auditability and revocation.
Rule IDSeverityWhat it checks
ID-001CRITICALStatic credentials hardcoded in agent code
ID-002HIGHNo identity definition for agent (no unique identity or DID)
ID-003HIGHShared credentials across multiple agents
Standards referenced: CWE-798, CWE-522; OWASP A07:2021; NIST AI RMF GV-1.3
Multi-agent rules detect coordination risks that emerge when two or more agents interact — including circular dependencies, shared resource contention, and missing observability.
Rule IDSeverityWhat it checks
MULTI-001HIGHMulti-agent system without topology monitoring
MULTI-002CRITICALCircular agent dependency detected via AST analysis
MULTI-003HIGHShared resource without contention protection (race condition risk)
MULTI-004MEDIUMNo chaos testing or fault injection configured
Standards referenced: NIST AI RMF MS-2.3, MS-2.5; CWE-362, CWE-835Related advisories: DRAKO-ABSS-2026-020 (CrewAI Delegation Hijacking)
Hook rules detect missing lifecycle controls in .drako.yaml. Hooks let you inject custom validation before tool execution and at session end.
Rule IDSeverityWhat it checks
HOOK-001MEDIUMNo pre-action validation hooks configured
HOOK-002MEDIUMNo session-end gate (on_session_end hook) configured
HOOK-003LOWHook script defined without timeout_ms
Standards referenced: NIST AI RMF GV-1.3, GV-4.1; CWE-400
Versioning rules detect when policy changes are untracked, making it impossible to determine which rules were active at the time of an incident.
Rule IDSeverityWhat it checks
CV-001HIGHNo policy versioning — no Drako platform connection (api_key_env, endpoint)
CV-002MEDIUMAudit logging configured but no platform connection to reference policy versions
Standards referenced: EU AI Act Art. 12; NIST AI RMF GV-4.1
FinOps rules detect missing cost controls. Without tracking, you cannot report spend, detect anomalies, or enforce budgets.
Rule IDSeverityWhat it checks
FIN-001HIGHNo cost tracking on LLM calls
FIN-002MEDIUMSingle model for all tasks — no cost optimization
FIN-003MEDIUMNo response caching configured
Standards referenced: NIST AI RMF MS-2.7
Resilience rules detect missing recovery paths. When a critical tool or agent fails, these controls determine whether the system degrades gracefully or crashes.
Rule IDSeverityWhat it checks
RES-001HIGHNo fallback defined for critical operations (payment, write, execute)
RES-002MEDIUMNo state preservation on agent failure (no checkpointing)
Standards referenced: NIST AI RMF MS-2.5
A2A rules detect security gaps in how agents communicate with each other. Without mutual authentication and message validation, a compromised agent can inject malicious instructions throughout the pipeline.
Rule IDSeverityWhat it checks
A2A-001HIGHNo agent-to-agent authentication configured
A2A-002CRITICALAgent accepts unvalidated input from other agents
A2A-003HIGHNo isolation between agent communication channels
Standards referenced: NIST AI RMF GV-1.3; CWE-287, CWE-653, CWE-74Related advisories: DRAKO-ABSS-2026-023 (Indirect Prompt Injection), DRAKO-ABSS-2026-024 (Multi-Turn Context Manipulation)
Best practice rules detect patterns that increase operational risk without necessarily being security vulnerabilities.
Rule IDSeverityWhat it checks
BP-001LOWFramework is behind the latest major version
BP-002MEDIUMNo tests referencing agent names
BP-003LOWNo retry or backoff logic on LLM calls
BP-004MEDIUMNo timeout on tool executions
BP-005LOWMore than 10 tools registered on a single agent
Standards referenced: NIST AI RMF MS-2.11

Suppressing rules

To suppress a specific rule for a file or project, add a suppress block to your .drako.yaml:
# .drako.yaml
suppress:
  - rule: BP-001
    reason: "Framework version pinned intentionally for compatibility"
  - rule: FIN-002
    reason: "Single model is a cost decision accepted by the team"
    expires: "2026-12-31"
You can also suppress inline using a source comment:
# drako: disable=SEC-007
prompt = f"Summarize: {user_input}"
Suppressed rules are still included in the governance score — suppression only removes them from CI pass/fail and SARIF output. Your score always reflects your real posture.
Use drako scan --baseline to acknowledge existing findings on legacy projects without suppressing individual rules. The baseline approach is preferred for inherited issues.

Build docs developers (and LLMs) love