You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Bug]: a2a-java client sends message with empty task ID and context ID #770
While investigating errors reported by https://darrelmiller.github.io/agentbin/index.html, I found out that messages sent by the A2A Java client contains empty taskId and contextId.
They look like (verbatim):
which are not deserialised by the a2a-java SDK due to the empty task.id.
The a2a-java client should omit optional fields that are not set when sending messages.
If I remove the taskId: "" field from the reproducer, the .Net agent replies with a generated taskId as expected.
I have hit the blank identifier version of this in my own setup, and it is annoying because everything downstream looks almost normal. I built Synthe as a standalone packet checker, with a GitHub Action, that runs before the receiver accepts the work. I encoded this client case with an empty task ID on the handoff. It gets stopped as REJECT invalid because the handoff ID is missing. Repo link: https://github.com/rohansiddam/Synthe. If you run it on one real handoff and tell me where it breaks, that would be super helpful.
To try it: paste the repo link into your coding agent and tell it to follow AGENTS.md. You can keep working with your agents and giving them instructions as normal; the tool checks each handoff and flags it if something is off. If you would rather run it by hand: python3 src/handoff_check.py packet.json --registry registry.json --workspace . --ledger ledger.json.
Activity
fix: omit optional fields with default values from client JSON serial…
fix: omit optional fields with default values from client JSON serial…
fix: omit optional fields with default values from client JSON serial…
fix: omit optional fields with default values from client JSON serial…
fix: omit optional fields with default values from client JSON serial…
fix: omit optional fields with default values from client JSON serial…
ehsavoie commentedon Mar 31, 2026
@jmesnil I remember that there were some case where not having the parameter was different than having it but empty. Not sure if those are still valid
rohansiddam commentedon Oct 1, 2026
I have hit the blank identifier version of this in my own setup, and it is annoying because everything downstream looks almost normal. I built Synthe as a standalone packet checker, with a GitHub Action, that runs before the receiver accepts the work. I encoded this client case with an empty task ID on the handoff. It gets stopped as REJECT invalid because the handoff ID is missing. Repo link: https://github.com/rohansiddam/Synthe. If you run it on one real handoff and tell me where it breaks, that would be super helpful.
To try it: paste the repo link into your coding agent and tell it to follow AGENTS.md. You can keep working with your agents and giving them instructions as normal; the tool checks each handoff and flags it if something is off. If you would rather run it by hand:
python3 src/handoff_check.py packet.json --registry registry.json --workspace . --ledger ledger.json.