Repository navigation
fix(clients): credit mcp-remote-bridged Claude Desktop and codex-mcp-client sessions - #1799
Merged
Merged
Conversation
…client sessions (#1786) Presence, the Clients hub and 24h call counts matched clientInfo.name exactly against ClientInfoNames. Claude Desktop through the mcp-remote bridge Connect writes sends "claude-ai (via mcp-remote <version>)" and Codex CLI sends "codex-mcp-client", so both stayed connected_never_seen and their sessions landed in other: rows, one per mcp-remote version. clientidentity.AliasCandidate strips one trailing mcp-remote tag before known-alias lookup; it keeps controls like NormalizeRaw, so an escape-prefixed name still cannot pass as a supported client, and unknown names keep their exact key. Codex gains the codex-mcp-client alias. Stale bridged other: rows from earlier releases are hidden. Closes #1786 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…elemetry parity Review round 1 (opencode Sol 6.1 + Claude adversarial): - The bridge tag now needs single-space separators and a printable, parenthesis-free version, so newline/control-bearing tags no longer strip to a supported alias. - Stop hiding pre-upgrade bridged other: rows: they were hidden without being credited, silently dropping last_seen evidence. - Telemetry activation's client-name sanitizer reports a bridged client as the client behind the bridge, matching presence and usage. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t name Review round 2: re-trimming AliasCandidate's result dropped a tab/newline before the bridge tag, so telemetry credited a name runtime and httpapi reject. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Deploying mcpproxy-docs with
|
| Latest commit: |
cdd363d
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://e952d1ad.mcpproxy-docs.pages.dev |
| Branch Preview URL: | https://fix-1786-bridged-client-alia.mcpproxy-docs.pages.dev |
Contributor
📦 Build ArtifactsWorkflow Run: View Run Available Artifacts
How to DownloadOption 1: GitHub Web UI (easiest)
Option 2: GitHub CLI gh run download 40848780736 --repo smart-mcp-proxy/mcpproxy-go
|
|
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Codex CLI and Claude Desktop stayed
connected_never_seenafter Connect, and their sessions landed inother:rows (one per mcp-remote version), because presence matchedclientInfo.nameexactly againstClientInfoNames:codex-mcp-client, which was not a Codex alias.claude-ai (via mcp-remote <version>).Changes
clientidentity.AliasCandidate:NormalizeRawplus removal of one trailing(via mcp-remote <version>)tag. Strict grammar (single spaces, printable parenthesis-free version), and controls are preserved, so an escape- or newline-bearing name still cannot pass as a supported client. Used only for supported-alias lookup; unknown names keep their exact key.runtime.sanitizeClientName(presenceClientLastSeen),UsageAggregate.applyClientCalls(24h calls), httpapi Clients hub (clientMatches, sessionother:check), and telemetry activation's client-name sanitizer.codex-mcp-clientalias.Not in scope
other:claude-ai (via mcp-remote 0.15.x)rows, usage buckets) is not migrated; it stays as-is and ages out. New sessions are credited correctly.local-agent-mode-mcpproxy (via mcp-remote …)and mcp-remote'smcp-remote-fallback-testprobe still appear asother:rows (optional in the issue).Testing
AliasCandidatetable incl. adversarial control/whitespace cases;RecordClientSeenfor bridged + Codex names; usage aggregate crediting; Clients hub end-to-end (claude-desktop/codexrows getlast_seenand the active session, noother:rows); escape-prefixed bridged name stays unknown; telemetry sanitizer cases.go test -racefor clientidentity, connect, runtime, telemetry, httpapi (CI skip regex): pass../scripts/test-api-e2e.sh: 70/70..github/.golangci.yml, bare and--build-tags server): no new findings.gpt-6.1-sol+ Claude Opus adversarial reviewer, 3 rounds; round 3 CLEAN.Closes #1786
🤖 Generated with Claude Code