Problem
auth-category Network entries show request body, headers, and status, but no response body (renders (empty) even when content-length says otherwise). This is deliberate today — buildEffectiveAuthFetch (core/mcp/inspectorClient.ts) does not wire updateResponseBody to avoid surfacing access_token/refresh_token in the body preview (screen-share leak). But it means the OAuth token-exchange response (the most useful thing to inspect when debugging auth) is never visible.
Change
Capture auth response bodies and display them, but mask sensitive OAuth fields by default behind a click-to-reveal toggle:
buildEffectiveAuthFetch — wire updateResponseBody so auth response bodies are captured (mirrors the transport fetcher).
- New
maskSecretsInBody util — masks access_token, refresh_token, id_token, client_secret values in JSON bodies; returns whether anything was masked.
NetworkEntry's BodyPreview — when a body contains masked fields, render it masked with a "Reveal"/"Hide" toggle. Copy honors the current (masked vs raw) view.
Notes
Acceptance criteria
Problem
auth-category Network entries show request body, headers, and status, but no response body (renders(empty)even whencontent-lengthsays otherwise). This is deliberate today —buildEffectiveAuthFetch(core/mcp/inspectorClient.ts) does not wireupdateResponseBodyto avoid surfacingaccess_token/refresh_tokenin the body preview (screen-share leak). But it means the OAuth token-exchange response (the most useful thing to inspect when debugging auth) is never visible.Change
Capture auth response bodies and display them, but mask sensitive OAuth fields by default behind a click-to-reveal toggle:
buildEffectiveAuthFetch— wireupdateResponseBodyso auth response bodies are captured (mirrors the transport fetcher).maskSecretsInBodyutil — masksaccess_token,refresh_token,id_token,client_secretvalues in JSON bodies; returns whether anything was masked.NetworkEntry'sBodyPreview— when a body contains masked fields, render it masked with a "Reveal"/"Hide" toggle. Copy honors the current (masked vs raw) view.Notes
access_token/refresh_tokenare in the/tokenresponse, which is post-redirect and never written to the session-restore files (OAuth pre-redirect auth HTTP activity missing from Network tab (lost across redirect) #1384); only pre-redirect bodies (discovery = public metadata, DCR/register) persist, so no bearer token hits disk.Acceptance criteria
/tokenexchange shows its JSON response body in Network, withaccess_token/refresh_tokenmasked until revealed.