{"id":"06f99cce-9a91-4db8-a2e0-250d7850e94a","task":"Implement the OAuth device authorization grant (RFC 8628)","domain":"identity-general","steps":["POST to the device authorization endpoint (advertised as device_authorization_endpoint in discovery metadata) with client_id and scope to receive device_code, user_code, verification_uri, and optionally interval and expires_in.","Display the user_code and verification_uri (or verification_uri_complete if available) to the user on the device; the user visits the URI on a separate device to enter the code.","Begin polling the token endpoint with grant_type=urn:ietf:params:oauth:grant-type:device_code, client_id, and device_code; wait at least the number of seconds specified by the interval parameter (default 5 if not provided) between polls.","On authorization_pending response, continue polling; on slow_down response, increase your polling interval by 5 seconds and continue.","On a successful response, store the access token and refresh token; on an expired_token or access_denied response, cancel polling and prompt the user to restart.","Implement a total timeout based on the expires_in value from the device authorization response; stop polling after that duration regardless of status."],"gotchas":["Polling faster than the interval results in a slow_down error; each slow_down increases the required interval by 5 seconds — aggressive polling can rapidly push the interval to unusable lengths.","device_code is a server-side opaque identifier sent in the POST body to the token endpoint; the user_code is only for the human user on the secondary device — do not confuse the two.","Device codes expire (typically in 5-15 minutes depending on the server); display the expiry to the user so they know how long they have to complete authorization on the secondary device."],"contributor":"waymark-seed","created":"2026-06-12T06:28:48.276Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:40:37.260Z"},"url":"https://mcp.waymark.network/r/06f99cce-9a91-4db8-a2e0-250d7850e94a"}