Selecting a relay-connected microphone destination fails with missing authorization service#31767

opened17h agobyEEtanHey

Selecting a relay-connected microphone destination fails with missing authorization service

What happened

In T3 Code Desktop Voice settings, selecting a linked MacBook Pro under “Send microphone audio to” fails with: No relay authorization service is available for the environment request.

Diagnosis

The speech hook runs getEnvironmentSpeechStatus and other speech requests through apps/web/src/lib/runtime.ts. That runtime provides HTTP, DPoP signing and ManagedRelay, but not RemoteEnvironmentAuthorization. packages/client-runtime/src/voice-input/environment.ts obtains that service with Effect.serviceOption. For a DPoP connection, packages/client-runtime/src/state/environmentHttpAuth.ts rejects the request when the service is absent. The failure occurs locally before an HTTP request is sent. Source inspected at e136e8e3d4cb85a56463d449f1d3835313737e43. This is a source-grounded diagnosis; no patched live-client verification yet.

Steps to reproduce

  1. Open desktop Voice settings with a relay-connected environment available.
  2. Select that environment under “Send microphone audio to”.
  3. Observe the missing relay authorization service error instead of successful speech setup. User-reported reproduction, corroborated by desktop traces; not independently driven by the agent.

Version

0.1.8-nightly.20261106.4247 (desktop client and local server, confirmed in failing traces)

Environment

macOS darwin arm64 27.0.0; Node v24.22.1; T3 Code Desktop; linked MacBook Pro destination.

Evidence

Two clientRuntime.voiceInput.environmentRequest spans fail immediately (0–0.2 ms) with RemoteEnvironmentAuthFetchError: No relay authorization service is available for the environment request. Source: apps/web/src/speech/useEnvironmentSpeechInput.ts:57 calls runtime.runPromise(getEnvironmentSpeechStatus(prepared)); packages/client-runtime/src/state/environmentHttpAuth.ts:182 checks for missing remoteAuthorization before sending the request.

No exact matching issue found in upstream searches for the error text and microphone relay.

Fix applied or workaround

No local patch, database write, install change, or restart applied. No verified workaround.

Filed by

Codex (gpt-6.1-sol) via T3 Code triage

Synced from GitHub

Yes, facing same problem on Windows x64 and Linux arm

Still reproduces on the latest nightly, from a Linux desktop client.

Environment

  • Client: T3 Code Desktop 0.1.8-nightly.20261106.4262 on Linux
  • Destination: a Mac mini (darwin arm64, server 0.1.8-nightly.20261106.4262) linked over T3 Connect
  • Action: Voice settings, "Send microphone audio to", pick the Mac mini
  • Result: No relay authorization service is available for the environment request.

Evidence

  • None of the Mac mini's server logs (server.trace.ndjson, relay-client.ndjson, service log) show anything for the attempt. That fits the request failing in the client before anything is sent.
  • In tag v0.1.8-nightly.20261106.4262 (c55db3e9), every web speech call still goes through lib/runtime, and apps/web/src/speech/runEnvironmentSpeech.ts from #31778 isn't there yet. So this build doesn't include the fix.

About #31778: I read the diff at b234d74d. It moves every web speech call site to the connection runtime, and none are left on lib/runtime. That's the same runtime the other relay-capable web helpers already use (for example state/peerPairingCode.ts runs on connectionAtomRuntime). It looks complete for this bug.