Telegram /login claude-code fails during Anthropic authorization with: 'Authorization failed Redirect URI x-safari-https://console.anthropic.com/oauth/code/callback is not supported by client.' Root cause is likely unencoded redirect_uri in generated Anthropic OAuth URL (Omni/Agent/Auth.hs), which allows iOS Telegram x-safari URL rewriting to mutate nested redirect_uri. Fix URL construction to properly percent-encode query params (like Codex flow), add regression test, and verify Ava /login message flow uses corrected URL.
Committed 49f02885. Updated Omni/Agent/Auth.hs Anthropic OAuth URL construction to use URI.renderSimpleQuery (percent-encodes redirect_uri/scope/etc) instead of manual query string concatenation. Added regression test 'Anthropic auth URL encodes redirect URI' to prevent raw redirect_uri regressions. Validation: typecheck.sh Omni/Agent/Auth.hs, lint Omni/Agent/Auth.hs, bild --test Omni/Agent/Auth.hs all pass.