Sitelet https://github.com/a2aproject/a2a-python/pull/1212
Skip to content

fix: omit artifacts from list tasks responses - #1212

Merged
mykytanetipa merged 2 commits into
a2aproject:mainfrom
dawNotPoi:fix/1211-list-tasks-artifacts
Aug 31, 2026
Merged

mykytanetipa merged 2 commits into
a2aproject:mainfrom
dawNotPoi:fix/1211-list-tasks-artifacts

Conversation

@dawNotPoi

Copy link
Copy Markdown
Contributor

Description

The A2A specification requires each Task in a ListTasks response to omit the artifacts field when includeArtifacts is false or unset. The protobuf response already excludes artifact content, but JSON serialization with default fields enabled emitted artifacts: [].

This change centralizes ListTasks wire serialization for REST and JSON-RPC. It preserves the existing pagination fields while removing the artifacts key unless the request explicitly enables it. When enabled, the field remains present with its actual content, including an empty array for tasks without artifacts.

Regression tests cover both the default behavior and includeArtifacts=true across both protocol bindings.

  • Follow the CONTRIBUTING Guide.
  • Make the Pull Request title in the https://www.conventionalcommits.org/ specification.
  • Ensure the tests and linter pass (bash scripts/format.sh / project lint checks).
  • Appropriate docs were updated (not required; this aligns serialization with the existing protocol contract).

Validation:

  • Route suites: 40 passed
  • Full suite: 1974 passed, 90 skipped, 3 xfailed, 1 xpassed
  • Coverage suite: 93% total coverage (88% required)
  • ./scripts/lint.sh (Ruff, format, and ty)

Fixes #1211 🦕

@github-actions

github-actions Bot commented Aug 27, 2026 •

Copy link
Copy Markdown

🧪 Code Coverage (vs main)

⬇️ Download Full Report

Base PR Delta
src/a2a/server/routes/common.py 89.66% 92.31% 🟢 +2.65%
Total 92.96% 92.97% 🟢 +0.01%

Generated by coverage-comment.yml

@dawNotPoi
dawNotPoi marked this pull request as ready for review August 27, 2026 14:50
@dawNotPoi
dawNotPoi requested a review from a team as a code owner August 27, 2026 14:50

@mykytanetipa mykytanetipa left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@mykytanetipa
mykytanetipa merged commit 35ef52e into a2aproject:main Aug 31, 2026
16 checks passed
mykytanetipa pushed a commit that referenced this pull request Sep 8, 2026
🤖 I have created a release *beep* *boop*
---


##
[1.1.4](v1.1.3...v1.1.4)
(2026-09-07)


### Features

* **itk:** register itk-python-v10-agent as a uv workspace member and
update dependency version markers
([#1203](#1203))
([6eee895](6eee895))
* **itk:** use shared scenarios
([#1201](#1201))
([b4a0b21](b4a0b21))


### Bug Fixes

* make event queue sink removal idempotent
([#1134](#1134))
([58c72c6](58c72c6))
* omit artifacts from list tasks responses
([#1212](#1212))
([35ef52e](35ef52e))
* owner-scope cancel/subscribe and write terminal state on cancel
([#1159](#1159),
[#1170](#1170))
([#1172](#1172))
([ddbf853](ddbf853))
* prevent first-owner write loss in in-memory stores
([#1194](#1194))
([bcc489c](bcc489c))
* **server:** let subscriber taps evict on full instead of wedging
dispatch ([#1137](#1137))
([0c2126f](0c2126f))
* **server:** surface producer errors after failed tasks
([#1229](#1229))
([bc32d7e](bc32d7e))
* **server:** validate push-notification URLs at config creation
([#1173](#1173))
([3eb88e2](3eb88e2))
* **server:** validate push-notification URLs before dispatch (SSRF
hardening)
([#1164](#1164))
([57a9df3](57a9df3))
* **server:** warn when queue_manager is ignored in
DefaultRequestHandlerV2
([#1153](#1153))
([08fd223](08fd223))


### Documentation

* **server:** say what the evict-on-full check actually tests
([#1209](#1209))
([4b7b242](4b7b242))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
Superagentic-AI added a commit to SuperagenticAI/superoptix that referenced this pull request Sep 9, 2026
A2A TCK MUST requires ListTasks to omit the artifacts field when includeArtifacts is false or unset (not []). Align with a2aproject/a2a-python#1212.
Superagentic-AI added a commit to SuperagenticAI/superoptix that referenced this pull request Sep 9, 2026
* fix(a2a): omit artifacts from ListTasks by default

A2A TCK MUST requires ListTasks to omit the artifacts field when includeArtifacts is false or unset (not []). Align with a2aproject/a2a-python#1212.

* Format a2a server.py for ruff format-check
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: ListTasks breaks the includeArtifacts=false spec "MUST omit" requirement

2 participants