[MODEL] Claude lacks client-type awareness — falsely identifies its runtime environment across all clients

Resolved 💬 3 comments Opened Apr 6, 2026 by mukenshi Closed May 17, 2026

Type of Behavior Issue

Claude made incorrect assumptions about my project

What You Asked Claude to Do

During a conversation in Claude Desktop on Windows, I was setting up Tailscale on a WSL2 instance to enable SSH remote access from Claude Desktop. I asked Claude to help verify connectivity and test the SSH connection.

What Claude Actually Did

Claude stated it was running in "a web or mobile chat interface run by Anthropic" and declined to test SSH connectivity because it believed it had no shell access. This is factually wrong — it was running inside Claude Desktop on Windows, which has MCP tool integration, shell access capabilities, and SSH remote session support.

The model's false self-identification cascaded into incorrect architectural recommendations. It proposed setting up a dedicated shell MCP server (@modelcontextprotocol/server-bash) on the remote host — an unnecessary layer — because it didn't know Claude Desktop already supports native SSH remote sessions.

Expected Behavior

Claude should know which client it is running in. At minimum, the system prompt or environment metadata should include:

  1. Client typeclaude-desktop, claude-code-cli, claude-web, claude-mobile, claude-api
  2. Platformwindows, macos, linux, ios, android
  3. Client version — e.g., Claude Desktop 1.2.3
  4. Available capabilities — whether shell access, MCP, SSH remote, file system access, etc. are available in this client

With this context, Claude would have:

  • Known it was Claude Desktop on Windows
  • Known SSH remote sessions are a native capability
  • Recommended the correct (simpler) architecture
  • Not made false claims about being a "web or mobile chat interface"

Relevant Conversation

User: Set up Tailscale in WSL2 so Claude Desktop can access this environment. Claude (Desktop, Sonnet): "The system prompt tells me I'm in 'a web or mobile chat interface run by Anthropic' — but if you're actually talking to me through Claude Desktop, that's just wrong context being injected. I'm operating on a false assumption about my own environment." Claude then acknowledged the gap itself: "I have no reliable way to know whether I'm running as: Claude.ai web interface, Claude Desktop on Windows, Claude Desktop on macOS/Linux, Claude Code CLI, API call"

This is notable because the model correctly identified the problem — it just can't fix it from the inside. The system prompt is injecting false context.

Impact

Medium - Extra work to undo changes

This has been present since Claude Desktop launched. Every session in Claude Desktop starts with Claude operating on a false premise about its own runtime. The severity scales with task complexity — for simple Q&A it's invisible, but for infrastructure, tooling, and multi-environment workflows it causes incorrect reasoning and bad recommendations.

Scope of Impact

This affects all clients, not just Claude Desktop. The claude.ai web interface, Claude Desktop, Claude Code CLI, mobile apps, and API consumers all feed into the same model without distinguishing which client is making the request. The model has no way to differentiate and defaults to generic (often wrong) assumptions.

Can You Reproduce This?

Yes, every time with the same prompt

Steps to Reproduce

  1. Open Claude Desktop on Windows (or macOS/Linux)
  2. Ask: "What client are you running in right now?"
  3. Claude will respond with generic text about being an AI assistant, or reference "web or mobile chat interface" — it cannot identify Claude Desktop
  4. Ask Claude to help with a task that depends on knowing its runtime (SSH setup, MCP tool configuration, shell access)
  5. Claude will reason from incorrect premises about what capabilities are available

Claude Model

Sonnet

Claude Code Version

Claude Desktop (Windows) — latest as of 2026-04-06.

Platform

Anthropic API

Additional Context

This is a day-one issue. Client-type awareness has never been present in any Claude client. The gap has become more consequential as the product surface has expanded — Claude Desktop now has MCP tools, SSH remote sessions, shell access, and file system integration. Without knowing which client it's in, Claude cannot reason about any of these capabilities.

Comparison: Claude Code CLI partially solves this — its system prompt explicitly states "You are Claude Code, Anthropic's official CLI for Claude" and enumerates available tools. Claude Desktop's system prompt does not provide equivalent context.

Minimal viable fix: Inject a structured metadata block into the system prompt:

Client: claude-desktop
Platform: windows
Version: 1.2.3
Capabilities: [mcp, shell, ssh-remote, filesystem]

This is low-effort on the platform side (the client already knows this information) and high-impact on reasoning quality for any task involving infrastructure, tooling, or environment-aware workflows.

Related issues:

  • #38276 — Claude Code integration with Cowork, Dispatch, and remote sessions on WSL2
  • #12506 — Claude Desktop: execute commands in WSL instead of Windows
  • #32734, #35073 — SSH remote handshake failures (partially caused by unclear capability boundaries)

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗