Two of this week's fixes are about what leaves a process, and one is about what a context budget counts.
ADK Python: exception text no longer reaches remote peers
A commit dated November 5, 2026 (Pacific time), "fix: stop returning uncaught exception text to remote A2A peers and trigger callers", changes what ADK returns when an agent run fails. Until now the A2A executors put str(exception) into the failed task's status message, and the /trigger/* handlers for Pub/Sub and Eventarc put it into the HTTP error detail. The commit explains the risk: exception text "routinely contains absolute paths, installed-package layout, environment variable names and echoed request payloads, so any caller that can reach these endpoints could map the host by provoking errors."
A new internal module logs the full traceback under a short random id, the first 12 hex characters of a UUID, and returns only a fixed summary plus that id, such as "Agent execution failed. (error_id: ...)". An operator can then find the real exception by searching the logs for the id. TransientError no longer formats the provider's error text into its own message and chains the cause instead. Setting ADK_DEBUG_ERRORS=1 brings the detail back, and the module warns that enabling it on a network-reachable deployment "restores the disclosure this module exists to prevent." The commit is also clear about one limit: structured Event.error_message fields on ADK events are still relayed by the A2A event converters.
ADK Java: a live turn is stored once
ADK Java PR #1656, merged on November 5, fixes how runLive stores text. The connection turned each server message into its own response, and runLive passed every event to the session service, unlike runAsync, which skips partial events. So a turn's text was stored as one event per chunk, or, when the chunks were marked partial, dropped by InMemorySessionService while the Firestore and Vertex AI session services stored it chunk by chunk. The connection now collects streamed text and emits it as one complete response before the turn ends, an interruption, or a tool call, and runLive skips partial events, as ADK Python does. The PR lists remaining differences: transcriptions are not yet aggregated, and live model audio is still stored in the session.
Codex 0.167.0: compaction counts failed output
Codex CLI rust-v0.167.0, published on November 6 UTC, says that "Automatic context compaction now accounts for retained output from failed responses and responses with missing token usage data." Network approval prompts now close when their requests end, and concurrent requests to the same endpoint prompt one at a time.
What remains uncertain. Both ADK changes are on main and not in a tagged release; the latest tags are ADK Python 2.13.0 of October 23 and ADK Java 1.14.0 of November 2. The ADK Python redaction covers top-level exception handlers, not every field an event can carry. We have not run these versions.
Analysis: The ADK Python fix is a pattern worth copying in any agent service. At Belgavi's Book Store, Dinky can test it in a minute: send the help-desk agent's A2A endpoint a malformed request and read the error that comes back. If it names a file path, a package or an environment variable, the reply should be replaced by a fixed message and an id that support staff can look up in the logs. The ADK Java fix suggests a second check: after a live voice session about a returned book, the stored history should contain each reply once.
Sources and evidence
- fix: stop returning uncaught exception text to remote A2A peers and trigger callers (google/adk-python commit, November 5)
- fix: aggregate live text chunks and skip partial events in runLive (google/adk-java PR #1656)
- Codex CLI rust-v0.167.0 release notes (openai/codex, November 6)
- ADK Python v2.13.0 release (google/adk-python, October 23)
An ADK Python commit dated November 5 replaces raw exception text in A2A failure messages and trigger HTTP errors with a fixed summary and a 12-character error id, with full tracebacks logged and ADK_DEBUG_ERRORS=1 restoring detail; structured event error fields are still relayed. ADK Java PR #1656 stores live-turn text once and skips partial events in runLive. Codex 0.167.0 counts output from failed responses toward compaction. Both ADK fixes are untagged.