LangChain4j 1.20.2 (2026-09-28) focuses on Agent-to-Agent (A2A) client fixes: tenant() on A2AClientInstance/A2AClientBuilder, @A2AClientAgent(tenant=…) auto-attaches tenant on every MessageSendParams (or parses it from /.well-known/{tenant}/agent-card.json), and filters tenant method args so they are not exposed as LLM tool parameters. AgenticScope/ResultWithAgenticScope toString guards against circular refs.
Key Takeaways
- ✓Shipped 1.20.2 — A2A tenant auto-propagation via annotation/builder or Agent Card URL
- ✓Tenant args filtered from LLM tool surface; attached on MessageSendParams
- ✓AgenticScope toString circular-ref guard
- ✓Docs: a2a-protocol.org + docs.langchain4j.info/tutorials/agents
Finished reading? Explore benchmark rankings & pricing
Real-world SWE-bench scores & $20/mo vs API cost break-even calculator
Project Links & Resources
Direct AccessIn-Depth Technical Analysis
Core Background & Industry Pain Points
Multi-tenant platforms using A2A need tenant IDs on every message without exposing them as LLM tool args. Prior clients lacked a first-class tenant injection point.
Architecture Highlights & Internals
1.20.2 (#6512) adds tenant() on A2AClientInstance/A2AClientBuilder and @A2AClientAgent(tenant=…). Non-empty tenants attach to each MessageSendParams; empty falls back to /.well-known/{tenant}/agent-card.json. @A2ATenantId params are filtered from the LLM tool surface. AgenticScope toString guards circular refs.
Authoritative Benchmarks & Measured Scores
Correctness patch—no SWE-bench/latency table. Validate tenant headers on the wire, absence from tool schemas, and finite toString. Many of the 125 touched files are version bumps across modules.
Developer Hands-on Guide
Upgrade to langchain4j:1.20.2 (agentic 1.20.2-beta30). Set tenant on annotation/builder or publish Agent Cards under tenant well-known paths. See Agents tutorial and A2A.
Discussion & Comments
0Sign in to join the discussion
Connect with AI developers to exchange benchmark insights.