Skip to main content

Week of October 4, 2026

Agent Workflow 0.14.0

A readable executable Java DSL, with explicit completion and actionable diagnostics.
  • Sequence.build() completes a parent whose final child always fails or cancels; normal returning paths still require explicit terminals
  • Six runnable deterministic examples cover typed Steps, nesting, decisions and Verdict routing, parallel assessments and bounded runtime fan-out
  • Local JDBC recovery retains committed work; durable loops and waits/timers remain deferred
Release notes | Tutorial

Agent Judge 0.18.0

Configure the evaluation first, then run it. Released as Agent Eval under the unchanged io.github.markpollack:agent-judge-* coordinates. This is a breaking change for 0.17 callers.
  • A Judge or Jury is built with its actual requirement, evidence and runtime, then called with judge() or vote(); RFC 2119 and EARS requirements run natively
  • Results are kept whole — original opinions, refusals and invocation ownership — and whether the application may rely on a Verdict is a separate policy decision that never rewrites it
  • Stored results move to the durable V6 format, read and written through the explicit agent-judge-json-jackson2 codecs
  • 14 modules on Maven Central for Java 21; the AgentWorks BOM does not yet manage 0.18.0
What’s New | Migrating to 0.18 | Source

Agent Journal 1.11.0

Sub-agents as runs of their own, for Claude Code and Codex.
  • A Claude Code or Codex sub-agent is recorded as a linked run: parentRunId points at the spawning run, the tag track=subagent marks it, and subagent.spawnToolUseId joins it to the parent’s tool_call event. The parent’s files hold the main loop only
  • Complete Claude Code capture needs the CLI started with --forward-subagent-text; Codex capture takes the root and child rollout files as CodexRollouts. Input and cache tokens over a Claude call and its sub-agent runs reconcile exactly to the call’s modelUsage
  • RunRecorder.recordOnce and CodexRunRecorder.recordOnce record an execution at most once per experiment and storage, across restarts
  • SessionLogParser.withSessionBaseline gives a later prompt of a multi-prompt Claude Code session its own cost instead of the session’s running total
  • Token and turn counting corrected for Claude Code, a recorder closed without finish() now ends CRASHED, the event and analysis streams name the version that wrote them, and Jackson moves to 2.22.3 / 3.2.3 for four September advisories
Sub-agent capture | What’s New | Source

Week of September 20, 2026

ACP Java SDK 0.18.0

Remote ACP agents, any number of clients. 0.18.0 implements the protocol’s Streamable HTTP and WebSocket transport, so a Java agent can listen on one HTTP endpoint and serve every client that connects, one agent per connection. The previous WebSocket agent transport served a single client. Contributed by @kamikaz1k.
  • StreamableHttpAcpClientTransport in acp-core connects to a remote agent over HTTP POST and Server-Sent Events; the new acp-streamable-http-jetty module serves HTTP/SSE and a WebSocket upgrade on the same path. Plain http:// is a first-class deployment, on HTTP/2 wherever the server speaks h2c
  • StreamableHttpAcpServlet mounts the endpoint in your own Servlet 6 container, including Spring Boot
  • JSON is now a choice: acp-json-jackson2 or the new acp-json-jackson3. acp-core alone no longer carries a JSON implementation, so a project that depends on it alone must add one
  • A second client built on an already-connected transport now fails at construction instead of timing out later; this was the cause of the Spring Boot autoconfiguration failure reported in June
  • A second prompt on a session no longer hangs or is rejected under CPU contention
  • WebSocketAcpAgentTransport is deprecated for removal in favour of StreamableHttpAcpAgentTransport
The AgentWorks BOM still manages the acp-java family at 0.17.0; the repin to 0.18.0 ships with the next BOM release. Until then, declare the 0.18.0 versions explicitly. Remote agents → · What’s New · Source

Week of September 13, 2026

Agent Judge 0.17.0

Spec-driven development doesn’t stop when the agent says it’s done. Two new judges read the written requirements back against the code that was supposed to satisfy them — EARS acceptance criteria, and RFC 2119 architectural constraints. The model assesses each requirement; the code decides the verdict. A missing answer cannot masquerade as a pass: fifty-one of fifty-two criteria established, with one still open, is an ABSTAIN that names the open one. 0.16 introduced both judges and let one with an empty roster return PASS. 0.17 refuses it — nothing was checked, so nothing can be claimed. A stored verdict now also carries its own interpretation: what was decided, whether the recorded facts support that, and what an older record cannot say. How the requirements judges work → · Migrating to 0.17 · Source

Week of August 16, 2026

Agent Client 0.29.0

Grok, Codex, and Antigravity now return a real tool trajectory through the same facade contract Claude has always honoured.
  • All three providers publish their parsed run trajectory through AgentClientResponse.getPhaseCapture(); live facade integration gates verify each one returns a capture containing tool uses, and offline model tests assert capture is additive rather than a replacement for the provider’s terminal result
  • Grok reads its native streaming-json ACP stream, Antigravity its stream-json, and Codex harvests its durable rollout JSONL after execution, matching the file by session id or working directory with a bounded wait for delayed flushes
  • The adapters consume the released Agent Journal 1.8.0 capture modules, so capture stays provider-owned and agent-model and the production surface of agent-client-core take on no journal dependency
  • LOOSE-mode Codex execution is repaired: current Codex versions reject --full-auto after exec, so full-auto now maps to the global --sandbox workspace-write and --ask-for-approval never options and stays distinct from the unrestricted bypass level, which portable auto-approve no longer grants implicitly
  • All 29 modules are published, agent-tck included
Project | What’s New | Source

Agent Journal 1.8.0

Tool-trajectory capture for three more CLIs, each parsed from its own durable stream.
  • New grok-cli-capture, codex-cli-capture, and antigravity-cli-capture modules turn each CLI’s JSONL into ordered ToolCallEvent and StepCostEvent records with stable tool-call identities
  • Codex capture sidesteps the outer-exec trap by classifying the nested payload.input call, assigning names such as Search, Read, Inspect, Test, Build, and Git, and falling back to Shell — with the raw command retained — wherever shell syntax makes the intent ambiguous
  • Grok’s stream has no durable turn-to-tool cost join, so its real session total is kept and split evenly across captured steps; Codex and Antigravity report no monetary cost at all, and say so explicitly with costAvailable=false
  • Gemini CLI capture remains turn-level and is deliberately excluded from the multi-CLI tool-trajectory claim
  • Additive on the existing event and trace contracts; 488 tests pass across the seven-module reactor
Project | What’s New | Source

Agent Client 0.28.0

Two new CLI providers, both carried through the full parity TCK.
  • A Grok CLI provider — agent-grok, grok-cli-sdk, agent-starter-grok — whose headless runs return a real JSON envelope, so session id, token usage and a genuine per-run USD cost are read rather than scraped, and a caller-supplied session UUID makes resume possible without recovering an id from output
  • An Antigravity provider for Google’s agy — agent-antigravity, antigravity-cli-sdk, agent-starter-antigravity — which declares its working directory with --add-dir so the CLI cannot divert writes to a shared scratch directory while reporting success
  • Antigravity run success is derived from whether work was produced and nothing was refused, not from its status field, which reports ERROR alongside complete and correct responses; soft denials are detected from both the result envelope and stderr
  • GROK and ANTIGRAVITY join the provider parity TCK and pass all ten scenarios each against live CLIs, with zero skips and zero failures. CI cannot re-verify them because both CLIs authenticate interactively and cache credentials rather than reading an API key
Project | What’s New | Source

AgentWorks BOM 1.16.0

The managed set catches up across the whole portfolio.
  • Repins the Agent Client family to 0.28.0, bringing the Grok and Antigravity providers into the managed set
  • Repins Agent Journal 1.7.0, Agent Hooks 0.7.0, Agent Judge 0.15.0, Agent Sandbox 0.10.0, Agent Bench 0.6.0, Agent Experiment 0.6.0, Agent Memory 0.4.0, Claude Agent SDK 1.5.0, and the acp-java family 0.15.0
  • Drops loopy from the managed set; it ships an executable distribution and is depended on directly
  • The BOM tracks a set verified together, so it trails the newest individual releases — Agent Client 0.29.0 and Agent Journal 1.8.0 must be declared explicitly
Project | What’s New | Source

ACP Java SDK 0.15.0

Notifications arrive in order and survive a graceful close; the published closure and the license are now what they claim to be.
  • Incoming notifications are serialized through a sink drained by concatMap, so a handler doing async work no longer observes rapid session/update chunks out of order (reported and fixed by @ljiro)
  • closeGracefully() waits for queued notifications to drain before tearing the session down, bounded by the session requestTimeout; previously the whole backlog could be discarded on close
  • Jackson 2.21.5 and Jetty 12.0.37 clear 17 known advisories (5 high) reaching consumers as compile-scope transitives
  • LICENSE is now the verbatim Apache 2.0 — the previous file omitted the Trademarks section and rewrote the copyright grant — and LICENSE plus NOTICE ship under META-INF in every artifact
  • Three *IT classes that mvn verify had never executed now run in CI
Project | What’s New | Source

Agent Client 0.27.0

Agent Client now verifies the dependency graph that published consumers actually receive.
  • Direct Jackson and Log4j declarations preserve the accepted security floors after child POM flattening instead of relying on source-reactor parent management
  • A generated CI gate discovers every published runtime module and resolves fresh one-coordinate, no-parent, no-BOM consumer closures before accepting the build
  • The compatible dependency train moves to Claude SDK 1.5.0, Agent Journal and Capture 1.7.0, and Agent Sandbox Core 0.10.0 while retaining Java 21
  • Current source headers and all published archive license payloads now agree with the Mark Pollack BSL distribution while retaining Apache history; immutable 0.26.0 artifacts are disclosed, not described as rebuilt
Project | What’s New | Source

Loopy 0.5.0

Loopy’s distribution is repaired: there is now an executable jar you can actually download and a library jar you can actually depend on.
  • Releases publish loopy-0.5.0-exec.jar as a GitHub Release asset and a plain library jar to Maven Central; the coordinate was previously a Spring Boot fat jar nothing could compile against, and no release had a downloadable asset attached
  • loopy and loopy.bat launchers locate the jar and set the JVM flags Loopy expects, and jbang loopy@markpollack/loopy works for the first time
  • Spring AI moves to 2.0.0 GA with agent-utils 0.10.0 and workflow-core 0.10.0, alongside Spring Boot 4.1.0 — Loopy was the last member on a Spring AI milestone
  • --help and --version no longer require an API key, and --version reports the real version instead of the hardcoded 0.1.0-SNAPSHOT every release since 0.2.0 announced
Project | What’s New | Source

Agent Hooks 0.7.0

Consumer-safe runtime closures, honest Java boundaries, and release-complete artifacts.
  • Standalone no-BOM consumers now resolve Jackson 2.21.6 and 3.1.6 through direct nearest-wins floors, including the actual Hooks-plus-supplied-Claude-SDK 1.5.0 shape
  • Published POMs no longer inject snapshot or milestone repositories into downstream builds, and every distributed archive now contains the BSL 1.1 license text
  • The Claude adapter declares its real Java 21 requirement while core, Spring, and Gemini remain Java 17; hook-failure and observation-only steering warnings are now visible
  • The parent publishes one aggregate CycloneDX 1.6 SBOM, release workflows are immutably pinned, and public Central consumer closures have zero findings
Project | What’s New | Source

Agent Memory 0.4.0

First BSL 1.1 release, consumer-safe Jackson resolution, a published SBOM, and an honest operating boundary.
  • 0.4.0 and later are Business Source License 1.1; 0.3.0 and earlier remain Apache 2.0, and published artifacts are not retroactively relicensed
  • Jackson 3 core and databind are declared directly on memory-core so standalone no-BOM consumers resolve 3.1.6 by nearest-wins, with a committed CI resolution gate
  • The parent artifact publishes one aggregate CycloneDX 1.6 SBOM; hosted OWASP/NVD scanning is removed in favour of a local offline Trivy procedure
  • The store is documented as local, plaintext and single-writer, with no locking, atomic index replacement or crash recovery
  • Overstated research figures are removed from the project page; the surviving measurements are labelled as one wiggum-memory research run of a different implementation
Project | What’s New | Source

Agent Experiment 0.6.0

Workflow-backed experiments, first-class journal evidence, and a consumer-safe release graph.
  • The new experiment-workflow module adapts typed Agent Workflow executions and step cost/token evidence to the AgentInvoker contract
  • AgentExperiment now owns the per-item Agent Journal lifecycle, while stored results use normalized Experiment-owned judgments and automatically read the older 0.5/Judge 0.13 format
  • Standalone consumers resolve Journal/Capture 1.7.0, Jackson 2.21.6, and Jackson 3.1.6 without a BOM; the verified 25-, 26-, and 57-JAR closures have zero findings
  • The Java 21 release passed 544 tests and publishes signed binaries, sources, Javadocs, and one aggregate CycloneDX 1.6 SBOM
Project | What’s New | Template | Source

Agent Journal 1.7.0

CVE-clear standalone resolution, license-complete artifacts, and a published SBOM.
  • Ordinary no-BOM consumers now resolve Jackson 2.21.6 and, for Claude capture’s transitive Jackson 3 path, 3.1.6 through direct nearest-wins dependencies
  • Every binary and source JAR now carries META-INF/LICENSE, every Javadoc JAR carries resources/LICENSE, and the BSL 1.1 terms are unchanged
  • The parent artifact now publishes one aggregate CycloneDX 1.6 JSON SBOM covering all three modules and their shipped dependency closure
  • Capture-module POMs now declare their actual Java 21 runtime requirement while journal-core remains Java 17; APIs and stream schemas are unchanged
Project | What’s New | Source

Agent Client 0.26.0

A smaller, supportable Agent Client surface for the current provider generation.
  • Claude Code, Codex, and Gemini CLI remain the actively verified provider set, with all three live parity jobs passing at the reviewed release candidate
  • The abandoned Vendir context advisor and Git-repository DSL are removed as an intentional breaking cleanup
  • The stale agents-runtime container build and Docker TCK are retired; Agent Client is now a Maven-only library distribution
  • Jackson and Log4j security pins, immutable release-workflow references, complete BSL text, and exact-SHA SBOM/security evidence prepare the repository for diligence review
Project | What’s New | Source

Agent Judge 0.14.0

Status-first, portable evaluation that preserves what every judge and composite stage actually reported.
  • The normalized Judgment model keeps PASS, FAIL, ABSTAIN, and ERROR distinct while treating score and classification as independent optional facts
  • Named composite attempts preserve stage identity, relation, policy, returned judgments, and code-only failure evidence without fabricating a verdict
  • Portable metadata, aggregation evidence, timing, and six token-usage quantities survive JSON and process boundaries
  • Framework bridges cover Spring AI 2.0.0, LangChain4j 1.19.0, Koog 1.1.1, and Agent Client 0.25.0; the public ten-module tutorial exercises the contract without credentials
Project | What’s New | Source

Week of June 29, 2026

Agent Journal 1.6.0

First-class capture primitives + a cost-metering correction. Slice 1 of the cross-repo journal-capture contract ships the §4 primitives downstream repos import, alongside a fix that roughly halves a long-run cost-accounting error.
  • New primitives: PhaseCapture.stepCosts(), JournalSteps.fromEvents(), a production fail-loud RunRecorder, and per-turn usage in the immutable log
  • Cost-metering fix: the headline LLMCallEvent.tokenUsage is now the cost-bearing Σ-per-turn-by-type aggregate (incl. cache) instead of the last-ResultMessage snapshot, which under-counted ~2× on long runs — same field, corrected value, no schema change
  • A per-file schemaVersion header on events.jsonl / analysis.jsonl (loaders skip it)
  • Additive on the frozen capture contract — a 1.5.0 consumer keeps working; 482 tests green
  • Project | What’s New | Source

AgentWorks BOM 1.13.0

Repins Agent Journal to 1.6.0. A focused, journal-only bump behind the usual gate.
  • All three journal artifacts (journal-core, claude-code-capture, gemini-cli-capture) → 1.6.0; every other member unchanged
  • Published behind the CI-enforced bom-verification gate (plain / Boot 3.5 / Boot 4), re-verified from Central post-publish
  • Version Table | Source

Week of June 15, 2026

Agent Journal 1.5.0

First-class Gemini CLI capture. The new gemini-cli-capture module projects Gemini runs into the same portable trace + cost schema as Claude, so one analysis layer reads both runtimes — plus per-step cost attribution.
  • New gemini-cli-capture module — cross-runtime capture into one trace + cost format
  • Per-step cost attribution (StepCostEvent, analysis.jsonl sidecar); portable TraceWriter moved into journal-core
  • Project | What’s New | Source

AgentWorks BOM 1.10.0 → 1.12.0

CVE remediation locked in, then the Gemini capture cut. Three BOM releases close out the Spring AI 2.0 security work and add the new journal member.
  • 1.10.0 / 1.11.0 (Jun 15): repin the source-fixed members to lock in the CVE remediation — claude-code-sdk 1.4.0, workflow 0.10.0, Spring AI BOM 2.0.0 backstop
  • 1.12.0 (Jun 17): repin Agent Journal to 1.5.0 and add gemini-cli-capture as a managed member — the first BOM release through the CI-gated release.yml (pre-publish gate + post-publish FINAL_PROOF)
  • Version Table | Source

Week of June 8, 2026

AgentWorks BOM 1.9.0

Suite-wide security release: Spring AI 2.0 GA convergence, four CVEs cleared. The BOM moves the suite onto Spring AI 2.0.0 GA and Spring Boot 4.0.7, and adds Jackson 3 and Reactor management so consumers resolve a vulnerability-free, converged dependency set — proven end-to-end against the published artifacts by the bom-verification gate.
  • Clears Spring Boot CVE-2026-40976 (CRITICAL) and -40973 (HIGH), Spring AI CVE-2026-41712 (HIGH), and Jackson CVE-2026-29062 (HIGH)
  • New managed import tools.jackson:jackson-bom 3.1.4 — converges Spring AI 2.0’s transitive Jackson 3 (its jsonschema-generator pulls jackson-core 3.0.3) up to a CVE-clear 3.1.4
  • New managed reactor-core 3.8.6 — reconciles claude-code-sdk’s 3.8.5 with Spring AI 2.0’s 3.8.6, a RequireUpperBoundDeps break the gate caught
  • Preceded by 1.8.0 (Jun 11), which cleared the long-deferred ACP bump to 0.14.0
  • Version Table | Source

Agent Client 0.22.0

Spring AI 2.0.0 GA + Spring Boot 4.0.7. The upgrade behind BOM 1.9.0 — primarily a security and dependency release, with one user-facing behavior change.
  • spring-ai 2.0.0-M2 → 2.0.0 GA and spring-boot 4.0.1 → 4.0.7, clearing the transitive Boot / Spring AI CVEs above
  • Spring AI 2.0 GA moved to Jackson 3, so agent-model, agent-claude, agent-codex, and agent-client-core now declare their Jackson 2 usage explicitly (governed by jackson-bom 2.21.2)
  • Default Gemini model upgraded to gemini-3.5-flash; override with agent-client.gemini.model
  • Project | Source

Week of June 1, 2026

AgentWorks BOM 1.6.0

The bom-verification quality gate lands, with Jackson 2.21.2 convergence. The largest coordinated release of the week — nearly every member moved — and the first to publish behind an automated gate that proves consumers get a single, converged dependency set.
  • New bom-verification/ harness: plain, Spring Boot 3.5, and Spring Boot 4 consumer scenarios with a JacksonConvergenceTest and the enforcer RequireUpperBoundDeps rule; releases now publish only behind a green gate
  • Imports jackson-bom 2.21.2, converging every member and shielding consumers from stray third-party Jackson transitives
  • The gate is load-bearing — re-running it against 1.5.0 fails on the exact Jackson divergence 1.6.0 fixes
  • Bookended by 1.5.0 (Jun 4, a managed test stack — Mockito / JUnit / AssertJ / Byte Buddy) and 1.7.0 (Jun 7, agent-client 0.21.0)
  • Coordinated bump: claude-code-sdk 1.3.0, agent-client / agent-starter 0.20.0, agent-workflow 0.9.0, agent-judge 0.12.0, agent-memory 0.2.0, agent-journal 1.4.0, agent-hooks 0.6.3, agent-sandbox 0.9.3, agent-bench 0.4.0, experiment-core 0.5.0
  • Version Table | Source

Agent Client 0.21.0

Portable reasoning-effort control across providers. A new provider-agnostic effort option (low / medium / high), with provider-native overrides — and the Provider Parity TCK now actually runs (it had been reporting green without ever executing).
  • AgentOptions.getEffort() — the cross-provider low/medium/high intersection, covered by the TCK
  • Provider-native overrides win when set: Claude ClaudeAgentOptions.effort (→ --effort), Codex CodexAgentOptions.reasoningEffort up to xhigh
  • 0.20.0 (Jun 6) shipped first: Claude trace content modes — traceContentMode(FULL | TRUNCATED | LENGTHS) — and automatic session-transcript archival, powered by agent-journal’s TraceWriter v2
  • Portable Options | Source

Claude Agent SDK 1.3.0

Aligned to Claude CLI 2.1.162, with a lossless rawJson escape hatch. A compatibility-and-hardening release that pins the wire contract and exposes wire fields the typed API doesn’t model yet.
  • ParsedMessage.RegularMessage gains a rawJson component carrying the exact stdout line each message was parsed from — backward compatible
  • All six HookInput subtypes now ignore unknown properties, fixing a hook hang under CLI 2.1.162’s added PostToolUse fields
  • New WireFixtureTest pins parsing against real 2.1.162 stream-json fixtures
  • Project | Source

Agent Workflow 0.9.0

A tool-agnostic Question / Option callback record. The AgentCallback.onQuestion SPI no longer leaks a tool-library type, and the judge integration completes its move to the io.github.markpollack namespace.
  • New workflow.callback.Question record (with nested Option) owned by workflow-api, replacing the leaked AskUserQuestionTool.Question; the spring-ai-agent-utils dependency drops out of workflow-api
  • Judge integration migrated to io.github.markpollack.judge (agent-judge 0.12.0) across JudgeGate, TieredGate, and the jury loops
  • Agent Loop | Source

Week of May 26, 2026

Agent Client 0.19.0

JSONL trace file support. ClaudeAgentModel now writes durable trace files during agent execution — tool calls, thinking blocks, text, and result metrics, flushed per event. Set traceDir on the builder or agent-client.claude.trace-dir in Spring Boot config. Each invocation writes one uniquely-named JSONL file, and the path is exposed via providerFields.get("tracePath").
  • TraceTarget record pairs run ID with trace file path
  • Fail-fast on invalid trace directory (before client setup)
  • Full UUID in filenames for collision safety
  • Claude Reference | Source

Agent Workflow 0.8.0

Trace file capture through the workflow journal. AgentClientStep propagates trace paths from the agent model into StepTransition and journal events. Every tool call in a multi-step workflow is now traceable back to a specific JSONL file.
  • ExecutionResult(text, tracePath) — new return type from AgentClient.executeForResult()
  • AgentContext.TRACE_PATH — well-known context key, cleared per step
  • JdbcTraceRecorder — trace_path column in step_transitions table
  • What’s New | Trace Capture Guide | Source

ACP Java SDK 0.12.0

7 new protocol methods. Session lifecycle (list, close, resume) is now stable. Elicitation, fork, and config options land as unstable with the new @UnstableAcpApi marker.

AgentWorks BOM 1.2.0

Coordinated version bump: agent-client 0.19.0, agent-workflow 0.8.0, agent-journal 1.2.0, ACP Java SDK 0.12.0, and all other managed artifacts.

Week of May 19, 2026

Agent Workflow 0.7.0

Managed Agents as a step runtime. ManagedAgentStep delegates workflow steps to Anthropic’s Managed Agents API. The workflow graph stays in charge — specific steps run in Anthropic’s cloud sandbox.

Agent Client 0.18.0

Migration to markpollack org. Package rename from org.springaicommunity.agents to io.github.markpollack, BSL license, standalone POM.