Do not put the bearer in the user message. The callback already decided. If a model instruction needs an id, use the subject that userinfo returned.

## What the model can see

The model can see the subject the hook already verified, and a refusal when the hook stopped the call. It cannot see the access token or the client secret. A prompt that asks the model who the caller is ignores the hook. The hook already returned unauthorized when userinfo did not accept the bearer.

Do not copy the token into graph state, crew inputs that tasks render, callback state the model reads, or telemetry context.

## Related

| Read | To learn how to |
| --- | --- |
| [Authorizing tool calls for Google ADK](/docs/ai/adk/authorize-tool-calls) | Refuse work after the subject is known |
| [Custom channel auth for Google ADK](/docs/ai/adk/channel-auth) | Keep the bearer on the hook |
| [Google ADK](/docs/agent-frameworks/adk) | See the planned sample |
| [API keys and M2M for Google ADK](/docs/ai/adk/api-keys-and-m2m) | Keep the secret on the caller |
