Plugin bin/ added to PATH on Bash tool but not PowerShell tool — no cross-platform equivalent for Windows
The inconsistency
On Linux/macOS (Bash tool active): Claude Code adds plugin/bin/ to PATH when spawning the Bash subprocess. A plugin ships an executable in bin/, bare my-tool works in any skill.
On Windows (PowerShell tool active, no Git Bash): there is no equivalent. plugin/bin/ is not added to the PowerShell subprocess's PATH, so bare my-tool fails — the command is not found.
The only way to close this gap would be to ship an env var (PATH prepend) from the plugin, but plugins cannot ship env vars — plugin.json only supports agent and subagentStatusLine in its settings field. There is no env block available to plugins.
So on Windows with the PowerShell tool there is no mechanism at all to ship a plugin executable that is callable as a bare command from a skill.
What works vs. what doesn't
| Platform | Shell | \plugin/bin/my-tool\ reachable as bare \my-tool\? |
|---|---|---|
| Linux / macOS | Bash tool | ✅ — bin/ added to PATH |
| Windows + Git Bash | Bash tool | ✅ — bin/ added to PATH |
| Windows, no Git Bash | PowerShell tool | ❌ — no injection, no plugin env mechanism |
Requested fix
Extend the existing bin/ injection to the PowerShell tool subprocess — prepend <plugin>/bin to PATH in Windows ;-separated format when spawning pwsh.exe, mirroring what already happens for the Bash subprocess. Plugin-shipped .cmd wrappers in bin/ would then resolve via PATHEXT as bare commands, same as bash scripts resolve today.
Related
- #65883 — reveals the Bash subprocess PATH injection mechanism (POSIX-format append, Bash spawn only)
- #68894 — previous filing of this issue, closed in favour of this cleaner framing