[BUG] Remote Control clients only see built-in slash commands — user-level commands and skills from ~/.claude are never advertised

Open 💬 0 comments Opened Jul 12, 2026 by arolus

Summary

A session started locally with claude --remote-control <name> advertises only built-in slash commands to a Remote Control client. Every user-level custom command (~/.claude/commands/*.md) and every user-level skill (~/.claude/skills/*/SKILL.md) is missing from the / menu in the remote client — even though it is the same session, running on the same machine, where all of them are present and working in the local terminal.

Steps to reproduce

  1. On machine A, have user-level customizations:

``
~/.claude/commands/close.md # plain file? no — symlink, see below
~/.claude/commands/spawn.md
~/.claude/commands/sync-docs.md # plain file
~/.claude/skills/lookaround/SKILL.md
~/.claude/skills/audit/SKILL.md
~/.claude/skills/spawn-session/SKILL.md
``

  1. On machine A, start a background session:

``
claude --remote-control my-session
`
(detached in tmux,
remoteControlAtStartup: true`)

  1. In the local terminal on machine A, open the / menu → all of the above are listed and invocable.
  2. From machine B, open that same session in the Claude UI (desktop app / claude.ai/code) and open the / menu.

Expected

The same command list as the session itself has — built-ins plus the user's own commands and skills. The session process is the source of truth, and it is running on machine A where those files live.

Actual

The remote client lists built-in commands only (/compact, /clear, /rewind, … are all there). Not a single user-level command or skill appears. There is no way to invoke them from the remote client's menu.

What I ruled out

  • Not a symlink issue. close.md and spawn.md are symlinks into a dotfiles repo; sync-docs.md is a plain file; lookaround/ and audit/ are plain directories; ios-deploy is a symlinked directory. All are invisible remotely, symlinked or not. All are visible locally.
  • Not a stale-cache issue. The sessions were created after every one of these files existed, and restarting the session / reconnecting does not change anything.
  • Not malformed frontmatter. All commands carry description: (plus allowed-tools:), all skills carry name: + description:. They load fine in the terminal.
  • Not the built-in-commands problem described in #76659 — built-ins show up correctly here; it is specifically the user-defined ones that never appear.

Why this matters

Remote Control is most useful for exactly the workflow where custom commands matter most: several long-lived background sessions, one per project, driven from another machine or from the phone. Losing every custom command and skill in that client means the customizations are only available where you least need them (sitting at the machine, in the terminal).

The docs imply that a per-session command list is advertised to Remote Control clients — https://code.claude.com/docs/en/skills.md states that setting a skill to "off" "also hides the skill from the command lists advertised to Remote Control clients". So the transport exists; user-level entries just do not make it into that list.

Environment

  • Claude Code: 2.1.207
  • Machine A (runs the session): macOS 26.5.2 (25F84), arm64
  • Machine B (remote client): Claude desktop UI
  • ~/.claude/settings.json: "remoteControlAtStartup": true

Related

  • #48696 — mobile harness does not register project skills from .claude/skills/ as slash commands (closed as not planned). Same class of problem, but that one is about project-level skills; this is about user-level commands and skills, and the client here is the desktop Remote Control UI, not just mobile.
  • #27888, #31846 — earlier reports of user-level commands not loading / disappearing from autocomplete.
  • #76659 — built-in commands missing from the web/mobile selector (the inverse of this: here built-ins are fine).

View original on GitHub ↗