Skip to content

fix(mcp): bound OAuth callback steps and log each phase to pinpoint hangs #22862

fix(mcp): bound OAuth callback steps and log each phase to pinpoint hangs

fix(mcp): bound OAuth callback steps and log each phase to pinpoint hangs #22862

Triggered via pull request July 21, 2026 18:43
Status Failure
Total duration 14m 35s
Artifacts

ci.yml

on: pull_request
Detect Version
Detect Version
Migrate Dev DB  /  Apply Database Migrations
Migrate Dev DB / Apply Database Migrations
Matrix: Build AMD64
Matrix: Build ARM64 (GHCR Only)
Test and Build  /  Lint and Test
3m 57s
Test and Build / Lint and Test
Test and Build  /  Build App
6m 44s
Test and Build / Build App
Check Docs Changes
Check Docs Changes
Matrix: Build Dev ECR
Deploy Trigger.dev (Dev)
0s
Deploy Trigger.dev (Dev)
Migrate DB  /  Apply Database Migrations
Migrate DB / Apply Database Migrations
Promote Images
0s
Promote Images
Matrix: Create GHCR Manifests
Process Docs  /  Process Documentation Embeddings
Process Docs / Process Documentation Embeddings
Create GitHub Release
0s
Create GitHub Release
Fit to window
Zoom out
Zoom in

Annotations

5 errors and 8 warnings
Test and Build / Lint and Test
Process completed with exit code 1.
app/api/mcp/oauth/callback/route.test.ts > MCP OAuth callback route > signals success over a same-origin BroadcastChannel carrying the state nonce: apps/sim/app/api/mcp/oauth/callback/route.test.ts#L87
AssertionError: expected '<!doctype html><html><head><meta char…' to contain 'ok: true' - Expected + Received - ok: true + <!doctype html><html><head><meta charset="utf-8"><title>Connection failed</title></head><body style="font-family: system-ui; padding: 24px"><p>Authorization failed. Please try again.</p><script> + try { var ch = new BroadcastChannel('mcp-oauth'); ch.postMessage({ type: 'mcp-oauth', ok: false, serverId: "server-1", state: "state-1", reason: "unknown" }); ch.close() } catch (e) {} + setTimeout(function () { window.close() }, 800) + </script></body></html> ❯ app/api/mcp/oauth/callback/route.test.ts:87:18
app/api/mcp/oauth/callback/route.test.ts > MCP OAuth callback route > performs the token exchange through the SSRF-guarded mcpAuthGuarded wrapper: apps/sim/app/api/mcp/oauth/callback/route.test.ts#L67
AssertionError: expected "vi.fn()" to be called with arguments: [ Anything, ObjectContaining{…} ] Number of calls: 0 ❯ app/api/mcp/oauth/callback/route.test.ts:67:48
Test and Build / Lint and Test
sim#test: command (/home/runner/_work/sim/sim/apps/sim) /home/runner/.bun/bin/bun run test exited (1)
Test and Build / Lint and Test
Process completed with exit code 1.
Test and Build / Lint and Test
Skipping sticky disk commit due to previous step failures
Test and Build / Lint and Test
Found 2 failed/cancelled steps in previous workflow steps
Test and Build / Lint and Test
Skipping sticky disk commit due to previous step failures
Test and Build / Lint and Test
Found 2 failed/cancelled steps in previous workflow steps
Test and Build / Lint and Test
Skipping sticky disk commit due to previous step failures
Test and Build / Lint and Test
Found 2 failed/cancelled steps in previous workflow steps
Test and Build / Build App
Error getting sticky disk: ConnectError: [deadline_exceeded] failed to expose and mount sticky disk: failed to get sticky disk: Get "https://api.blacksmith.sh/stickydisks?arch=amd64&installation_model_id=7445&region=us-west&repo_name=simstudioai%2Fsim&stickydisk_key=simstudioai%2Fsim-turbo-cache-build-pull_request&type=stickydisk": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
Test and Build / Build App
Error getting sticky disk: ConnectError: [deadline_exceeded] failed to expose and mount sticky disk: failed to get sticky disk: Get "https://api.blacksmith.sh/stickydisks?arch=amd64&installation_model_id=7445&region=us-west&repo_name=simstudioai%2Fsim&stickydisk_key=simstudioai%2Fsim-node-modules-pull_request&type=stickydisk": context deadline exceeded (Client.Timeout exceeded while awaiting headers)