Follow-up from the local telemetry audit of #953 / #903.
Problem
Connection/setup support cases often hinge on CLI resolution, binary downloads, config writing, compatibility checks, websocket setup, and SSH process behavior. Current telemetry has useful top-level coverage (remote.setup, cli.download, SSH process lifecycle), but several slow/failure-prone phases are not separately visible.
Proposed scope
CLI binary resolution
Add a cli.resolve trace with child phases such as:
cli.resolve.cache_lookup
cli.resolve.version_check
cli.resolve.lock_wait
cli.resolve.download
cli.resolve.verify
cli.resolve.fallback
Useful properties:
- result:
success, failure, cancelled
- resolved source:
cached, downloaded, bundled, system, fallback
- requested/actual version, if safe and useful
- downloads disabled flag
- verification outcome
- bounded failure category
- duration
CLI configuration
Add telemetry for configuring the CLI for a deployment/workspace without recording secrets:
cli.configure.started
cli.configure.succeeded
cli.configure.failed
Useful properties:
- config mode/category
- credential source category, not value
- result/failure category
Remote setup phases
Extend remote.setup child phases to cover more of the user-visible setup path:
remote.setup.cli_resolve
remote.setup.auth_setup
remote.setup.compatibility_check
remote.setup.workspace_monitor
remote.setup.websocket_monitor
remote.setup.ssh_monitor
remote.setup.vscode_handoff
This should make it possible to answer: “where did connection setup spend its time?”
Websocket/reconnect diagnostics
Add bounded reconnect attempt telemetry:
- attempt number bucket
- backoff duration
- route bucket with query stripped
- result
- failure category
Avoid raw query strings or unnormalized paths.
SSH setup/process diagnostics
Add events/traces for setup points not currently visible:
ssh.config.generated
ssh.config.failed
ssh.process.spawned
ssh.process.spawn_failed
ssh.handshake.failed
ssh.port_forward.started
ssh.port_forward.failed
ssh.connection.stable
Useful properties:
- result/failure category
- duration
- process source/category
- no private key paths or raw command lines unless explicitly redacted
Acceptance criteria
- CLI cache hit, download, verify, fallback, and failure paths are distinguishable in telemetry.
- Remote setup traces show the major phases between command invocation and VS Code remote handoff.
- Websocket reconnect telemetry uses bounded, privacy-safe properties.
- SSH setup/process failure modes are bucketed and visible.
- Tests cover representative success/failure paths.
Generated by Coder Agent from the telemetry audit of #953.
Follow-up from the local telemetry audit of #953 / #903.
Problem
Connection/setup support cases often hinge on CLI resolution, binary downloads, config writing, compatibility checks, websocket setup, and SSH process behavior. Current telemetry has useful top-level coverage (
remote.setup,cli.download, SSH process lifecycle), but several slow/failure-prone phases are not separately visible.Proposed scope
CLI binary resolution
Add a
cli.resolvetrace with child phases such as:cli.resolve.cache_lookupcli.resolve.version_checkcli.resolve.lock_waitcli.resolve.downloadcli.resolve.verifycli.resolve.fallbackUseful properties:
success,failure,cancelledcached,downloaded,bundled,system,fallbackCLI configuration
Add telemetry for configuring the CLI for a deployment/workspace without recording secrets:
cli.configure.startedcli.configure.succeededcli.configure.failedUseful properties:
Remote setup phases
Extend
remote.setupchild phases to cover more of the user-visible setup path:remote.setup.cli_resolveremote.setup.auth_setupremote.setup.compatibility_checkremote.setup.workspace_monitorremote.setup.websocket_monitorremote.setup.ssh_monitorremote.setup.vscode_handoffThis should make it possible to answer: “where did connection setup spend its time?”
Websocket/reconnect diagnostics
Add bounded reconnect attempt telemetry:
Avoid raw query strings or unnormalized paths.
SSH setup/process diagnostics
Add events/traces for setup points not currently visible:
ssh.config.generatedssh.config.failedssh.process.spawnedssh.process.spawn_failedssh.handshake.failedssh.port_forward.startedssh.port_forward.failedssh.connection.stableUseful properties:
Acceptance criteria
Generated by Coder Agent from the telemetry audit of #953.