July 2, 2026
Claude Code engine — run Claude's agentic loop as a governed, session-backed agent
Claude Code engine — run Claude's agentic loop as a governed, session-backed agent
6 new 5 improved 14 fixed
Agents get a pluggable execution engine this week, with Claude Code shipping as the first built-in option alongside a full suite of transcript fidelity and eval reliability fixes that make it production-ready.
New
-
Pluggable agent engine + Claude Code harness. Agents now support swappable execution engines; the built-in Claude Code engine runs Claude’s agentic loop as a first-class, governed, session-backed agent with full trace viewer support.
-
Task Sets. Tasks can now be grouped into named, versioned collections and run as a single evaluation target via the API,
dn task-setCLI commands, or the Environments UI. -
User-controlled task-environment models. You can now choose which model a task’s environment (defender) uses per role via
--env-model role=idin the CLI,model_overridesin evaluation.yaml, or the API — independently of the solver and judge models. -
Evaluation sample search. You can now search across all samples in an evaluation by free text — matches are highlighted with per-sample counts, and a “Matches only” filter collapses non-matching samples.
-
Blind SQL injection extraction skill. A new blind SQLi extraction skill and tool in the web-security capability supports boolean/timing-based oracle identification, WAF bypass patterns, and automated char-by-char extraction.
-
Blind SSRF chains with attacker infrastructure provisioning. The blind-SSRF-chains skill now guides agents to detect available cloud CLIs and provision attacker infrastructure (S3 buckets, redirect servers) for SSRF proof-of-concept evidence.
Improvements
-
Task-set provenance on evaluation detail. Evaluation detail now shows the linked task-set org/name and a collapsible list of skipped members with reasons when an eval was run from a task set.
-
Usage summary in headless print mode.
dn --printnow outputs a model, tokens, tool calls, and cost summary to stderr after each run, matching the cost visibility available in the TUI. -
Sub-agent costs in TUI footer. The TUI footer now shows sub-agent LLM costs as a separate “subagents $X.XX” segment so total spend is no longer understated when using spawned sub-agents.
-
Bare
--resumeopens session picker.dn --resume(or-r) with no argument now opens the session picker instead of erroring, matching the UX of Codex and Claude. -
Chat runtime reliability overhaul. Sandbox state management is simplified and the chat page handles runtime lifecycle more reliably, reducing spurious disconnects and state loss.
Fixes
-
AIRT assessments no longer stuck in pending/running. Assessments stuck indefinitely are now automatically finalized after a configurable timeout (default 2h), and a one-time migration clears the existing backlog.
-
AIRT overview page 500 errors resolved. The AIRT project summary endpoint no longer intermittently 500s (~58/hr) due to a closed database transaction.
-
Eval task timeout now respects org ceiling. Evals no longer fail at provisioning when
--task-timeout-secis unset; the runtime is capped to your org’s ceiling, and an over-ceiling value returns a clear 400. -
dn/*model IDs work in AIRT runs. All three AIRT model roles (attacker, judge, and target) now correctly route through the LiteLLM proxy instead of failing with “LLM Provider NOT provided.” -
TUI conversation scrolling is smooth. The viewport no longer jumps when new messages arrive, and scroll performance is significantly improved for long conversations (~129 ms/step → ~47 ms).
-
TypeScript files no longer sent as video. The SDK
readtool no longer crashes generation when reading.ts/.mtsfiles — they’re now correctly identified as text. -
Image content no longer fails text-only models. Text-only models (e.g. via OpenRouter) no longer fail with a 404 when a tool returns image content — the SDK substitutes a textual description and retries automatically.
-
MCP tool calls retry transient failures. MCP tool calls now retry once on dropped connections or subprocess crashes instead of immediately marking the server unavailable.
-
MCP shutdown no longer emits noisy warnings. The MCP client no longer logs “Task exception was never retrieved” on shutdown when the subprocess or remote server has already exited.
-
Unique browser session names required for web-security agents. Concurrent web-security agents no longer clobber each other’s browser state — the
--session <name>flag is now required. -
Agents page defaults to no session grouping. The sessions page now defaults to no grouping instead of grouping by workflow instance; workflow grouping remains available in the selector.
-
Claude Code engine transcript fidelity. Transcripts now show the initiating user message and correctly link tool call outputs to their calls; orphaned tool results and lost calls from burst-emit engines are fixed.
-
Engine-override eval sessions no longer hang. Evaluations using
--engine claude-codeno longer wait indefinitely for tool approval that never arrives. -
Eval task timeout respects org ceiling. Evals with an unset
--task-timeout-secno longer fail at provisioning due to exceeding the org’s 6h ceiling.