All notable changes to Drako are documented here.
Format: Keep a Changelog
- Unified versioning: SDK, backend, public repo, and MCP manifests now
share version 3.0.0. All version references synchronized across
pyproject.toml,
__init__.py, server.json, and OpenAPI spec. - License classifier corrected to match BUSL-1.1 license field
drako scan --simple— indie-developer-friendly output mode. Filters findings to a curated whitelist of 12 high-signal rules, renders plain text with severity markers (capped at 10 findings), and emits framework-aware remediation snippets for CrewAI, LangChain, LangGraph, AutoGen, and direct API integrations. Mutually exclusive with--format sarifand--details.drako nocode— governance scanner for no-code agent workflows. Parses n8n and Flowise exports into a normalized graph, runs BFS taint propagation from user-input nodes, and evaluates 10 rules (NC-001 → NC-010) covering unsanitized input, code execution, credential exposure, missing human-in-the-loop, and more. Shipsdrako nocode scananddrako nocode bomwith text/JSON/markdown output, reusing the existing scoring engine for coherence withdrako scan.drako[comply]— optional extra for EU AI Act documentation generation. Runs a 30-question interactive assessment, merges answers with the latest scan cache and BOM, and generates DOCX and PDF drafts for Articles 9 (Risk Management), 11 (Technical Documentation), 12 (Record-Keeping), and 14 (Human Oversight). Every generated document carries a hardcoded legal disclaimer stating that the output is a draft requiring qualified legal review. Install withpip install drako[comply].- Desktop Agent Scanning improvements and stabilization
- TypeScript scanner with Tree-sitter (17 dedicated rules)
- 97 total governance rules (up from 25 in v1.0.1)
- Determinism scoring, benchmark system, baseline scanning
- Proxy mode, policy templates, Helm chart
govern()universal wrapper for runtime compliance enforcement
- Desktop Agent Scanning —
drako desktop scan/bom/governcommands- Auto-discovery of MCP servers across 8 clients: Claude Desktop, Claude Code, Cursor, VS Code, Windsurf, Codex CLI, Gemini CLI, Kiro
- Cross-platform config path detection (macOS, Linux, Windows)
- 8 MCP-specific security rules (MCP-001 → MCP-008): unrestricted filesystem, shell capability, untrusted source, unrestricted network, plaintext credentials, unencrypted transport, elevated privileges, compound capabilities
drako desktop govern— scan + activate runtime proxy to intercept MCP traffic- Desktop Governance Score separate from project scoring
- Output formats: text, JSON, SARIF, markdown
- RFC 3161 timestamping on audit trail — externally verifiable by EU AI Act auditors
- TSA redundancy: FreeTSA primary, DFN backup
- Offline verification via embedded certificate chain
tsa_tokencolumn on audit_logs table- GET /api/v1/audit/verify/{entry_id} endpoint
- Threat Intel Bootstrap — automated daily sync from AlienVault OTX and abuse.ch
- Quality gate: rejects pulses with <10 subscribers or zero indicators
- Maps external threats to DRAKO-ABSS format with
external: truemetadata - GitHub Action cron: daily 6 AM UTC
- Scanner Limitations Documentation —
docs/scanner-limitations.md- Transparent disclosure of 5 known gaps: interprocedural taint, TS type resolution, semantic injection, in-process enforcement, cross-agent taint
- Roadmap issue labels on GitHub for each gap
- MCP server Dockerfile: corrected CMD to use
drako serveinstead of broken module path drako/mcp/__main__.pyadded to enablepython -m drako.mcp- server.json version sync with SDK version
- Windows encoding crash —
drako pushand other commands no longer crash on cp1252 with box-drawing characters- Systemic fix via
configure_output()at CLI startup errors='replace'fallback for non-UTF-8 terminals
- Systemic fix via
drako simulatenow reads API key from.drako.yaml(was ignoringapi_key_env)drako validateauto-detects.drako.yamlin current directory when argument omitteddrako scan --thresholdflag added (was only--threshold-det)drako scan --benchmarkpanel now renders (was silent)drako scan --sharetexts includegetdrako.comURL (was only pip install)drako initcorrectly validates API key against backend (was "Could not reach backend" on valid keys)- Backend upgrade URLs — all references to
useagentmesh.comreplaced withgetdrako.comin 403 responses and feature-gating messages
- Command ordering in
drako --help— journey-linear (scan → init → push) instead of alphabetical - Quickstart hint added to
drakohelp output - Post-scan CTA no longer suggests
pip install drako(user already has it) - First-scan output truncated to top 10 findings with
... and X morefooter - Benchmark panel labeled "benchmark dataset" instead of "100 scanned projects"
- SSO via WorkOS (Enterprise tier) — Okta, Azure AD, SAML, Google Workspace
- GET /api/v1/auth/sso/authorize?email=X
- GET /api/v1/auth/sso/callback
- POST /api/v1/settings/sso/enable (owner only, enterprise plan)
- CSRF state tokens via Redis (10min TTL, one-time use) with HMAC fallback
- Auto-provisioning of users matching tenant's sso_domain
- Password login blocked server-side for SSO-enforced domains
- Domain normalization (case-insensitive comparison)
- 28 SSO tests (CSRF state, password blocking, domain validation, enable/disable flows)
- Production Dashboard — full observability UI at getdrako.com/dashboard
- Stats grid with MetricCards (audit entries, agents, policy blocks, trust score)
- Governance Score Trend (TimeSeriesChart)
- Tool Health Grid (circuit breaker status per tool)
- Recent Activity feed with 30s auto-refresh
- Governance Roadmap component (conversion hook with tier-tagged action items)
- Observability page — 4 tabs (Overview, Metrics, Violations, Alerts)
- P50/P95/P99 latency charts
- Bottleneck detection
- Cost breakdown by model (DonutChart)
- Violation heatmap (7 days × severity)
- FinOps page — cost tracking, budget burn-down, model/agent breakdown
- Settings page — config viewer, snapshot history, feature status
- recharts integration for all visualizations
- PlanGate component for Pro/Enterprise feature gating
- 10 integration test issues discovered in E2E testing
- govern() module/function shadowing — renamed
govern.py→governance_wrapper.pyto eliminate namespace collision - Scoring recalibration — reduced per-finding deductions (CRITICAL -10, HIGH -5, MEDIUM -2, LOW -1) to prevent score floor at 0
- DET-001 now detects missing temperature on CrewAI
Agent()constructors - LangGraph tools detected in BOM via
ToolNode([...])andtools=[...]patterns - VCR-001 extracts vendors from
ChatOpenAI(),ChatAnthropic(),ChatGoogleGenerativeAI()constructors - Global governance rules reclassified — ODD-001, MAG-001, ID-001, HOOK-001, CV-001, FIN-001, RES-001, CI-001, MULTI-004 now finding_type="recommendation" (do not affect score)
- validate command UnicodeEncodeError on Windows (systemic fix via CAN_UNICODE pattern)
- drako bom --format text exit code (now 0 even with 0 agents found)
- Telemetry endpoint no longer requires auth (anonymous events)
- Config push API schema aligned (flat payload accepted)
- TypeScript Scanner — Tree-sitter based TS/JS scanning alongside Python
- Framework detection: LangChain.js, Vercel AI SDK, Mastra, AutoGen.js
- 17 TypeScript rules covering Security (10), Governance (3), Determinism (2), Compliance (1), Operational (1)
- TS BOM extraction: agents, tools, models, prompts from
.ts/.tsx/.js/.jsx/.mts/.mjsfiles - Mixed Python+TypeScript projects supported with merged scoring
- Optional dependency:
pip install drako[typescript] - 15 TypeScript rule fixtures with vulnerable/safe pairs
- 34 TypeScript tests
- Clean project output — projects without AI agent components show friendly message instead of generic findings
- Graceful degradation — TS files detected without tree-sitter installed show install hint, Python scan continues
- Policy count: 97 total (80 Python + 17 TypeScript)
- Rule count badge updated across README, docs, and scoring section
- Re-release of 2.2.1 (PyPI upload conflict resolved)
- Framework detection for LangGraph/AutoGen in subdirectories (parent directory walk-up)
- AutoGen new package names support (
autogen_agentchat,autogen_core,ag2) - Jupyter notebook
.ipynbscanning with IPython magic line stripping - CrewAI
@CrewBasepattern: agent extraction from YAML config files - Unconditional exit code 1 on critical findings removed (only with
--threshold-det) - MULTI-002 false positive on constructor calls (Crew, Task, Agent)
- Finding type classification:
vulnerabilityvsrecommendation - Terminal report split into FINDINGS and RECOMMENDATIONS sections
- Recommendations excluded from governance score
finding_typefield in JSON and SARIF output formats
- Determinism Score — second score (0-100) measuring agent reliability (unset temperatures, missing timeouts, no retries)
- Execution path reachability analysis on findings — unreachable tools are dimmed
- 25 DRAKO-ABSS security advisories (OWASP Top 10 for LLMs, MITRE ATLAS, framework CVEs)
- Vendor Concentration Risk rules (VCR-001, VCR-002, VCR-003)
- Framework-specific security rules (FW-AUTOGEN-001/002, FW-CREWAI-001/002/003, FW-LANGGRAPH-001/002, FW-PYDANTIC-001, FW-SK-001/002)
- Detection rules (DET-001 → DET-007) for determinism scoring
- Benchmark comparison system (
--benchmarkflag) - Baseline system for incremental scanning (
--baselineflag,drako baseline show/reset) - Structured impact explanations on all rules (
--detailsflag with impact, attack_scenario, references) - GitHub Action for PR governance comments
- Score card SVG generation (
--sharewith scorecard + badge SVGs) - PQL telemetry (anonymous, opt-in)
- Framework security monitor (6 frameworks, daily)
- HITL test harness (
test_mode(),MockHITLResolver) - Policy simulation (
drako simulate) - Config validation (
drako validate) - Behavioral versioning
- Policy templates (fintech, healthcare, eu-ai-act, startup, enterprise)
- Out-of-process enforcement proxy (
drako proxy start/stop/status) - Property-based testing (28 Hypothesis tests)
- Helm chart for Kubernetes deployment
- Type safety (
mypy --stricton new modules)
- Renamed from AgentMesh to Drako
- 80 rules total (up from 55)
- 647 tests (up from 277)
- Domain: getdrako.com
- PyPI:
drako(wasuseagentmesh)
- Autopilot Mode —
drako initnow generates smart defaults from scan results (audit-first). Governance levels:--autopilot(default),--balanced,--strict,--manual drako upgradecommand — upgrade governance level in-place (--balanced,--strict)- Proxy Mode — out-of-process LLM API governance proxy. Intercepts every LLM call at the network layer with full governance pipeline (ODD, DLP, Magnitude, HITL).
drako proxy start/stop/status - Policy Templates — 6 industry-specific governance presets:
base,fintech,healthcare,eu-ai-act,startup,enterprise. Template inheritance viaextends:in config.drako templates list/show - Property-Based Testing — 28 Hypothesis tests covering scoring invariants, grade monotonicity, deep merge, ODD/DLP/Magnitude enforcement
- Helm Chart — Kubernetes deployment for the governance proxy (
deploy/helm/drako-proxy/) governance_levelconfig field —autopilot | balanced | strict | customextendsconfig field — template inheritance (e.g.extends: fintech)test_mode()context manager andMockHITLResolverfor testing governed agents in CI- Docker Compose file for proxy deployment
drako initdefault mode is now autopilot (was manual)- Config
load()now resolves template inheritance automatically
- Sync
__version__in__init__.pywithpyproject.toml— CLI now reports correct version
- Version bump to 2.0.0 — reflects production maturity and comprehensive governance coverage
- CI: add
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24to publish workflow for Node.js 24 migration
- Publish workflow: suppress Node.js 20 deprecation warnings on GitHub Actions
- 26 new governance rules (60 total, up from 34)
- New rule categories: Multi-Agent (MULTI-001→004), Hooks (HOOK-001→003), Context Versioning (CV-001→002), FinOps (FIN-001→003), Resilience (RES-001→002), A2A (A2A-001→003), Best Practices (BP-001→005)
drako scan --shareviral sharing with pre-written posts for LinkedIn, X, Blueskydrako history,diff,rollbackcommands for policy version managementgovern()universal one-liner — auto-detects CrewAI, LangGraph, AutoGen- Per-tool interception: every tool call evaluated through the enforcement pipeline
- Prompt Injection Detection (5 pattern categories, bidirectional)
- Circuit Breaker per-tool (CLOSED/OPEN/HALF_OPEN state machine)
- Human-in-the-Loop checkpoints (configurable triggers, webhook notifications)
- Intent Fingerprinting (SHA-256 + Ed25519 two-gate verification)
- Programmable Hooks (pre/post action, Python scripts + YAML conditions)
- Context Versioning (immutable snapshots on every push)
- Agentic FinOps (cost tracking, model routing, semantic cache, budgets)
- Deterministic Fallback (failover to code/agent/human/retry queue)
- Secure A2A Gateway (DID auth, channel policies, prompt worm prevention)
- Multi-Agent Topology (directed graph, conflict detection, cascade analysis)
- Chaos Engineering (7 fault types, governance grading A-F)
- Collective Intelligence (anonymous IOC sharing, quality scoring)
- Observability platform (session traces, latency metrics, drift detection)
- Alerting engine (configurable rules, Slack/email/PagerDuty)
- OTEL & SIEM export (OpenTelemetry, STIX 2.1, CEF)
- MCP local server for Claude Desktop integration
- AutoGen middleware support
drako servecommand for local MCP serverdrako verifycommand for configuration validation
govern()now wraps individual tools (was session-level only)- Config-as-code: full governance configurable from
.drako.yaml drako pushtranslates YAML to enforcement engine- Scoring updated for 13 rule categories (was 4)
- Policy engine evaluates all 60 rules in <2ms (P50)
- CLI UX improvements across all commands
- API quota handling — graceful fallback on rate limit
- Compact output mode (
drako scan --compact) - Autofix dry-run (
drako fix --dry-run) --projectflag to specify project root- Governance badge URL generation for CI/CD
- BUSL-1.1 license version update
- Scan output refined for readability
- Operational Design Domain (ODD) scan rules: ODD-001 to ODD-004
- Magnitude limit scan rules: MAG-001 to MAG-003
- Agent Identity scan rules: ID-001 to ID-003
- 10 new rules total (34 total, up from 24)
- API key YAML fallback —
api_key_envfield in.drako.yaml - Cross-platform environment variable hint in scan output
drako scananddrako initcommand edge cases
- Windows MAX_PATH crash in directory scanner
- Broken benchmarks link (sdk/ prefix removed)
- Corrected paths and BSL-1.1 license note for contributors
- Professional upgrade CTA in scan output
- Initial release of Drako SDK
- 24 governance rules across 4 categories (Security, Governance, Compliance, Best Practices)
- Agent BOM (Bill of Materials) — AST-based discovery of agents, tools, models, prompts
- Framework support: CrewAI, LangGraph, AutoGen, LangChain, LlamaIndex, PydanticAI
- CLI commands:
drako scan,drako init - Output formats: Terminal (Rich), JSON, SARIF 2.1.0
- Governance scoring: A-F grades (0-100 scale)
- GitHub Code Scanning integration via SARIF
- Pre-commit hook support
- Performance benchmarks (<2ms full scan P50)
- PyPI package:
drako