# What changed in @google/adk

> 54 changes in @google/adk 2 from its official release notes, upgrade guides and advisories: 4 breaking, 1 deprecations, 1 security, 12 new APIs and options. Each one cited. Sources checked 2026-10-19. HTML: https://unstale.sh/npm/@google/adk/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## @google/adk 2

### Breaking changes

- Code executors now run client-side code by default and match adk-python output. (2.3.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.3.0)
- Implicit Google API authentication now requires HTTPS. (2.3.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.3.0)
- Boolean nodes in JSON Schema are converted to object schemas. (2.3.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.3.0)
- Boolean branches in anyOf are converted to object schemas. (2.2.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.2.0)

### Security

- Fetched agent card RPC URLs are pinned to the origin from which the card was fetched. (2.3.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.3.0)

### Deprecations

- Custom metadata keys prefixed with __adk_internal_ are reserved for ADK; developers should avoid using them. (2.2.1) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.3.0), [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.2.1)

### New APIs and options

- Adds opt-in automatic session creation in the runner. (2.3.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.3.0)
- Adds DebugLoggingPlugin with full Python parity for developers who want debug logging through a plugin. (2.3.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.3.0)
- Adds ToolCallIntegrityPlugin with adk-python parity. (2.2.1) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.3.0), [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.2.1)
- The code-execution skill is published on the agent card. (2.2.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.2.0)
- Ports the BasePlanner planner API. (2.2.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.2.0)
- Ports the BuiltInPlanner planner API. (2.2.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.2.0)
- customMetadata is declared for memory entries. (2.2.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.2.0)
- LlmAgent gains planner support, allowing developers to configure an agent with a planner. (2.2.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.2.0)
- The logger facade is exported from the @google/adk public API. (2.2.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.2.0)
- Ports the PlanReActPlanner planner API. (2.2.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.2.0)
- Adds a module aliasing ToolContext to Context. (2.2.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.2.0)
- Adds a toolset for Chrome WebMCP document.modelContext tools. (2.2.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.2.0)

### Behavior and default changes

- ExampleTool examples are validated when the tool is constructed, surfacing invalid examples earlier. (2.3.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.3.0)
- Session metadata is attached to task, working, and input-required events. (2.2.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.2.0)
- ADK tracking headers are sent on MCP HTTP requests. (2.2.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.2.0)
- MemoryEntry.id is forwarded as the Vertex memoryId. (2.2.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.2.0)

### Fixes and other changes

- Aborted invocations are sealed in session history. (2.3.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.3.0)
- Tool responses are normalized before afterToolCallback runs. (2.3.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.3.0)
- Base64 is decoded as UTF-8 in the browser. (2.3.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.3.0)
- In-memory artifact versions now have canonicalUri populated. (2.3.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.3.0)
- The sandbox name is persisted in the code execution context state delta. (2.3.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.3.0)
- Instruction strings containing ${...} and escaped braces are kept as literal text. (2.3.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.3.0)
- Planners now keep all leading parallel function calls. (2.3.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.3.0)
- llmRequest.model is set to the selected route model. (2.3.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.3.0)
- RoutedLlm.generateContentAsync now forwards abortSignal. (2.3.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.3.0)
- The call_llm span is ended in a finally block when runAsync exits early. (2.3.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.3.0)
- Runner now prefers an explicit appName over app.name. (2.3.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.3.0)
- VertexAiSessionService now gives Session.state a null prototype. (2.3.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.3.0)
- Partial chunks of a streamed response now share one event ID. (2.3.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.3.0)
- Falsy tool errors are preserved. (2.3.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.3.0)
- In SSE mode, the parent step loop stops after transfer_to_agent. (2.3.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.3.0)
- An explicit vertexai: false is respected even when enterprise environment variables are set. (2.3.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.3.0)
- Event listing now follows nextPageToken when retrieving a session. (2.3.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.3.0)
- Numeric log levels are mapped to Winston names. (2.3.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.3.0)
- Closes the Chrome reply envelope and prevents it from being shown. (2.2.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.2.0)
- An empty text part is rendered when a code execution result has no output. (2.2.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.2.0)
- Stringifies customMetadata values in GcsArtifactService. (2.2.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.2.0)
- Routes Gemini 3.x live audio by model family rather than the '-flash-live' spelling. (2.2.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.2.0)
- Emits one input transcription on Gemini 3.x Live. (2.2.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.2.0)
- Gemini 3.5 Live Translate is excluded from Gemini 3.x Live routing. (2.2.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.2.0)
- Keeps tool and code execution events in Memory Bank writes. (2.2.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.2.0)
- Fixes nested artifacts leaking versions into their parent. (2.2.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.2.0)
- Emits the body argument for a schema-less media type. (2.2.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.2.0)
- Scans every 2xx media type for the return schema. (2.2.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.2.0)
- Makes safeStringify total. (2.2.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.2.0)
- Closes the skill registry when the skill toolset closes. (2.2.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.2.0)
- Drops a null member from an enum when converting with toGeminiSchema. (2.2.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.2.0)
- Boolean branches in type arrays are converted to object schemas. (2.2.0) — [release notes](https://github.com/google/adk-js/releases/tag/adk-v2.2.0)
