fix(shared): reject corrupted T3 Connect authorization links - #11364
fix(shared): reject corrupted T3 Connect authorization links#11364shivamhwp wants to merge 1 commit into
Conversation
ApprovabilityVerdict: Not approved Macroscope's review found this PR not approvable — The production change alters validation in the shared T3 Connect authorization flow, determining which browser links may proceed to Clerk authorization. Although the implementation and tests are narrowly scoped, authentication-sensitive behavior requires human review. You can add or adjust custom eligibility rules. Learn more. |
Thread transfer impact✅ Thread transfer remains within every enforced ceiling.
Baseline: unavailable · PR result: Scenario and decoded snapshot size10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.
Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed. |
|
Independent validation of Exercised the unused base64url bits systematically: 256 valid state/challenge pairs all round-tripped. For each pair, changed only unused bits in the final character: 15 state variants and 3 challenge variants. This revision rejected all 4,608 noncanonical variants; the merge-base accepted them. This is URL-parser validation, not an end-to-end authorization test. Reproduction scripts and recorded results — Model: GPT-6. Harness: Codex. |
Corrupted
t3 connectlinks currently proceed through browser authorization and fail only when the CLI receives the code. Validate the state and PKCE challenge against the canonical base64url forms generated by the CLI before starting authorization. Both loopback and headless flows use this parser.Closes #4934. The existing invalid-link page asks users to run
t3 connectagain.Validation: 24 focused shared tests pass; both corruption regressions fail before the fix. Targeted lint, formatting and diff checks pass. Internal Fable refinement remains pending.
Stacked on #11298; this PR changes only the shared parser and its tests.
Model and harness: GPT-6 through Codex.