<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
  <channel>
    <title><![CDATA[ A2A Java SDK Documentation ]]></title>
    <description><![CDATA[ A Java library that helps run agentic applications as A2A servers following the Agent2Agent (A2A) Protocol. ]]></description>
    <link>https://a2aproject.github.io/a2a-java/</link>
    <atom:link href="https://a2aproject.github.io/a2a-java/rss.xml" rel="self" type="application/rss+xml"/>
    <generator>Quarkus Roq</generator>
    <lastBuildDate>Tue, 03 Nov 2026 00:00:00 +0000</lastBuildDate>
      <item>
        <title><![CDATA[A2A Java SDK 1.5.0.Final Released]]></title>
        <link>https://a2aproject.github.io/a2a-java/posts/a2a-java-sdk-1-5-0-final-released/</link>
        <guid isPermaLink="false">https://a2aproject.github.io/a2a-java/posts/a2a-java-sdk-1-5-0-final-released/</guid>
        <pubDate>Tue, 03 Nov 2026 00:00:00 +0000</pubDate>
        <description><![CDATA[]]></description>
        <content:encoded><![CDATA[<p>We&#39;re happy to announce  A2A Java SDK 1.5.0.Final
! This release brings unified HTTP client configuration, a first phase of expanded OpenTelemetry support, and improvements to authorized task listings, alongside fixes across JSON-RPC, REST, and gRPC.
 
 
 
 
  
    
     
      
     NOTE
       
      
 
 This release contains breaking changes: custom HTTP client configurations may need adjustment, JPA task stores require a schema migration, and custom server integrations must adapt to changes in the validation SPI. Programmatically built handlers also have corrected blocking timeout defaults. See  Upgrading from 1.4.x
 for affected configurations and practical upgrade examples. Ordinary AgentExecutor implementations and applications using the reference servers do not need the server SPI adaptations.
 
    
   
      
  
 
 
  HTTP Client Configuration in One Place
 
 
 The new A2AHttpClientConfiguration brings provider selection, SSE parser settings, and redirect header policies together:
 
 
 
 A2AHttpClientConfiguration configuration =
    A2AHttpClientConfiguration.builder()
        .excludedProviderNames(List.of(&amp;quot;cdi&amp;quot;))
        .sseParserConfig(SSEParserConfig.builder()
            .maxLineLength(64 * 1024)
            .build())
        .build();

A2AHttpClient client...</p><div style="margin-top: 50px; font-style: italic;"><strong><a href="https://a2aproject.github.io/a2a-java/posts/a2a-java-sdk-1-5-0-final-released/">Keep reading</a>.</strong></div><br /> <br />]]></content:encoded>
      </item>
      <item>
        <title><![CDATA[A2A Java SDK 1.4.0.Final Released]]></title>
        <link>https://a2aproject.github.io/a2a-java/posts/a2a-java-sdk-1-4-0-final-released/</link>
        <guid isPermaLink="false">https://a2aproject.github.io/a2a-java/posts/a2a-java-sdk-1-4-0-final-released/</guid>
        <pubDate>Mon, 28 Sep 2026 00:00:00 +0000</pubDate>
        <description><![CDATA[]]></description>
        <content:encoded><![CDATA[<p>I am happy to announce the release of  A2A Java SDK 1.4.0.Final
. This release consolidates the multi-tenancy API with an important breaking change, brings SSE configuration improvements, strengthens interoperability testing, and delivers a large set of bug fixes across all transports.
 
 
 
 
  
    
     
      
     NOTE
       
      
 
 This release contains a breaking change affecting the @Tenant qualifier. See the  migration
 section for details.
 
    
   
      
  
 
 
  What&#39;s New
 
 
  Multi-Tenancy: @Tenant Qualifier Consolidation
 
 
 The @Tenant qualifier annotation has been moved from a2a-java-extras-multitenancy into server-common ( #1176
). This is a breaking change -- see  migration
 below.
 
 
 Moving the qualifier into server-common means the CDI runtime can now correctly filter out tenant-qualified beans at all @PublicAgentCard and @ExtendedAgentCard injection points. Previously, annotating a tenant card with both @Tenant(&amp;quot;x&amp;quot;) and @PublicAgentCard would cause CDI ambiguity and result in 404 errors on the default route.
 
 
 
Additional improvements in this area...</p><div style="margin-top: 50px; font-style: italic;"><strong><a href="https://a2aproject.github.io/a2a-java/posts/a2a-java-sdk-1-4-0-final-released/">Keep reading</a>.</strong></div><br /> <br />]]></content:encoded>
      </item>
      <item>
        <title><![CDATA[A2A Java SDK 1.3.0.Final Released]]></title>
        <link>https://a2aproject.github.io/a2a-java/posts/a2a-java-sdk-1-3-0-final-released/</link>
        <guid isPermaLink="false">https://a2aproject.github.io/a2a-java/posts/a2a-java-sdk-1-3-0-final-released/</guid>
        <pubDate>Thu, 27 Aug 2026 00:00:00 +0000</pubDate>
        <description><![CDATA[]]></description>
        <content:encoded><![CDATA[<p>I am happy to announce the release of  A2A Java SDK 1.3.0.Final
. This release introduces multi-tenancy support, switches the authorization model to fail-closed by default, delivers a wave of security hardening, and improves protocol compliance across all transports.
 
 
 
 
  
    
     
      
     NOTE
       
      
 
 This release contains breaking changes . See the  migration
 section for details.
 
    
   
      
  
 
 
  What&#39;s New
 
 
  Multi-Tenancy Support
 
 
 The headline feature of 1.3.0 is multi-tenancy ( #1084
), which lets a single A2A server provide different agent behavior per tenant. Each tenant can have its own AgentExecutor (business logic) and AgentCard (capabilities, skills, metadata). Requests without a recognized tenant automatically fall back to the default beans.
 
 
 Two new SPIs in server-common define the routing contract:
 
 
 
  
 
 AgentExecutorRouter -- resolves an AgentExecutor for each request based on the tenant identifier.
 
  
  
 
 AgentCardRouter -- resolves the appropriate AgentCard for tenant-specific getExtendedAgentCard and public card endpoints.
 
  
 
 
 
 A CDI-based implementation is...</p><div style="margin-top: 50px; font-style: italic;"><strong><a href="https://a2aproject.github.io/a2a-java/posts/a2a-java-sdk-1-3-0-final-released/">Keep reading</a>.</strong></div><br /> <br />]]></content:encoded>
      </item>
      <item>
        <title><![CDATA[A2A Java SDK 1.2.0.Final Released]]></title>
        <link>https://a2aproject.github.io/a2a-java/posts/a2a-java-sdk-1-2-0-final-released/</link>
        <guid isPermaLink="false">https://a2aproject.github.io/a2a-java/posts/a2a-java-sdk-1-2-0-final-released/</guid>
        <pubDate>Fri, 07 Aug 2026 00:00:00 +0000</pubDate>
        <description><![CDATA[]]></description>
        <content:encoded><![CDATA[<p>I am happy to announce the release of  A2A Java SDK 1.2.0.Final
. This release hardens the authorization model, adds stream lifecycle management, and fixes several protocol compliance issues.
 
 
 
 
  
    
     
      
     NOTE
       
      
 
 This release contains breaking changes . See the  migration
 section for details.
 
    
   
      
  
 
 
  What&#39;s New
 
 
  Authorization Hardening
 
 
 The 1.1.0 release introduced the TaskAuthorizationProvider SPI for per-user task authorization. This release closes gaps in that model and makes the authorization API easier to use from non-CDI environments.
 
 
  Read authorization on referenced tasks
 
 
 Previously, when a request referenced existing tasks via referenceTaskIds, the SDK populated those tasks in the RequestContext without checking read authorization. An unauthorized caller could probe for task existence via sendStreamingMessage or subscribeToTask. This release enforces read authorization on all referenced task lookups ( #1005
).
 
 
 The fix touches all transports (JSON-RPC, gRPC, REST) and decorators (OpenTelemetry, authorization). InMemoryTaskStore now applies fail-closed authorization -- when...</p><div style="margin-top: 50px; font-style: italic;"><strong><a href="https://a2aproject.github.io/a2a-java/posts/a2a-java-sdk-1-2-0-final-released/">Keep reading</a>.</strong></div><br /> <br />]]></content:encoded>
      </item>
      <item>
        <title><![CDATA[A2A Java SDK 1.1.0.Final Released]]></title>
        <link>https://a2aproject.github.io/a2a-java/posts/a2a-java-sdk-1-1-0-final-released/</link>
        <guid isPermaLink="false">https://a2aproject.github.io/a2a-java/posts/a2a-java-sdk-1-1-0-final-released/</guid>
        <pubDate>Mon, 29 Jun 2026 00:00:00 +0000</pubDate>
        <description><![CDATA[]]></description>
        <content:encoded><![CDATA[<p>I am pleased to announce the release of A2A Java SDK 1.1.0.Final. This is the first feature release after our 1.0.0.Final GA, bringing per-user task authorization and several stability fixes.
What&#39;s New
Task Authorization SPI
The headline feature of 1.1.0 is the new TaskAuthorizationProvider SPI, which enables per-user task authorization for multi-tenant deployments. This is a breaking change for implementations that rely on unguarded task access.
By implementing this SPI as a CDI bean, you can control which users can read, write, or create tasks:
@ApplicationScoped
public class MyTaskAuthorizationProvider implements TaskAuthorizationProvider {

    @Override
    public boolean checkRead(ServerCallContext context, String taskId, TaskOperation op) {
        return isOwner(context.getUser(), taskId);
    }

    @Override
    public boolean checkWrite(ServerCallContext context, String taskId, TaskOperation op) {
        return isOwner(context.getUser(), taskId);
    }

    @Override
    public boolean checkCreate(ServerCallContext context, TaskOperation op) {
        return context.getUser().isAuthenticated();
    }

    @Override
    public boolean isTaskRecorded(String...</p><div style="margin-top: 50px; font-style: italic;"><strong><a href="https://a2aproject.github.io/a2a-java/posts/a2a-java-sdk-1-1-0-final-released/">Keep reading</a>.</strong></div><br /> <br />]]></content:encoded>
      </item>
      <item>
        <title><![CDATA[A2A Java SDK 1.0.0.Final Released]]></title>
        <link>https://a2aproject.github.io/a2a-java/posts/a2a-java-sdk-1-0-0-final-released/</link>
        <guid isPermaLink="false">https://a2aproject.github.io/a2a-java/posts/a2a-java-sdk-1-0-0-final-released/</guid>
        <pubDate>Wed, 10 Jun 2026 00:00:00 +0000</pubDate>
        <description><![CDATA[]]></description>
        <content:encoded><![CDATA[<p>I am pleased to announce the release of A2A Java SDK 1.0.0.Final -- our first GA release. The A2A Java SDK is the official Java implementation of the Agent2Agent (A2A) Protocol, an open standard that enables AI agents to communicate and collaborate regardless of underlying framework, language, or vendor.
This release is the result of six months and seven pre-releases (four Alphas, a Beta, and a Candidate Release), with contributions from 17 people. If you&#39;ve been tracking the pre-releases, you can upgrade from CR1 with no breaking changes.
What&#39;s A2A?
The Agent2Agent (A2A) Protocol is an open standard, governed by the Linux Foundation, that lets AI agents discover each other&#39;s capabilities, delegate tasks, and collaborate -- even if they&#39;re written in different languages or built on different frameworks. For example, an orchestrator agent written in Python can delegate to a specialist agent written...</p><div style="margin-top: 50px; font-style: italic;"><strong><a href="https://a2aproject.github.io/a2a-java/posts/a2a-java-sdk-1-0-0-final-released/">Keep reading</a>.</strong></div><br /> <br />]]></content:encoded>
      </item>
  </channel>
</rss>

