ADK 2.11 tool nodes pause for approval: gate Sume paid tools
Google ADK 2.11.0 tool nodes can pause for user approval via RequestInput. Use it so a Sume paid tool call waits for a person before it spends.

Use the new approval pause in Google ADK Python v2.11.0 (2026-10-02) for any Sume tool that spends. The release says tool nodes now pause for user approval via RequestInput, which gives your workflow a human checkpoint before a paid call reaches Sume.
Sume does not ask for approval itself over MCP. It gives you a dry_run option and an optional max_spend_usd, and it requires an idempotency_key on write and paid calls.
What the release adds
The ADK notes list tool nodes pausing for approval, an abort_signal, auto-cancel on client disconnect for /run_sse, a ModelConsultTool, and an optional MCP SDK 2.x connection path.
At a glance
| Step | Where it happens | Tool or setting |
|---|---|---|
| Preview | Before approval | dry_run, generation_admission_preview |
| Approval | ADK tool node | RequestInput pause |
| Execute | After approval | idempotency_key, max_spend_usd |
| Wait | Afterwards | jobs_wait slices of 45 to 55 seconds |
A sensible approval flow with Sume
First call the paid tool with dry_run to see what it would do. Present that result in the approval step. On approval, call again with a fresh idempotency_key and max_spend_usd set to the approved amount.
Sume also has generation_admission_preview for estimating whether a generation will be admitted. Use it in the same place.
- Dry run, show, approve, then run.
- One idempotency_key per approved action.
- Keep read tools out of the approval node to avoid prompt fatigue.
Limits and what is not verified
I did not run an ADK workflow against Sume for this post. The release notes are short about how RequestInput payloads are shaped, so follow ADK's documentation for the node code.
Sources
Related posts
More in Developers
- Agent Completions takes messages[] but returns a receipt
Sume Agent Completions borrows the OpenAI messages[] request shape, yet create returns 202 and a run receipt to poll: no choices[] and no streaming.
- Agent crashed after submitting: find the Sume runs it started
List a Format's runs, read trigger.idempotency_key, and rebuild which rows already ran after a fresh agent session or crash, without paying for a duplicate.
- Teammate continues a thread: why webhook_delivery.url reads null
A Sume Agent turn reading a teammate's job sees delivery state, but webhook_delivery.url and last_error are null. Who reads which jobs, explained.
- AI avatar waiting UX: Tavus hair check vs Sume queued status
Tavus hides the join delay with a hair check before the live room; Sume jobs sit in queued or processing with no queue position or ETA.
Written by Sume