---
name: update-toolshed
description: >-
  Update installed Eigenwise Toolshed plugins and model-gateway, or check their status. Use to update
  Toolshed, refresh the marketplace, or check versions.
---

# Update Toolshed

Run the portable updater from this plugin installation:

```sh
node "${CLAUDE_PLUGIN_ROOT}/bin/update-toolshed.js"
```

It reads Claude Code's installed-plugin registry, refreshes the Eigenwise Toolshed marketplace, and
updates every active Toolshed install recorded there at its recorded scope and project directory. That
includes user, project, and local installs across projects, not only the project where this skill is
invoked. It does not inspect, refresh, or update third-party marketplaces or plugins. When Model Gateway
is installed, it runs its stable updater, `node ~/.claude/model-gateway/update.js`, and surfaces that
command's output. The updater downloads and verifies the proxy, swaps it by rename without asking you to
close sessions, restarts it when it can, and reports the resulting state. Claude Code's registry has
versions but not release notes or commit history, so the updater says that plainly instead of guessing at
a changelog. Gateway wiring stays as recorded: the stable updater runs `setup --preserve-wiring`, which
never wires a project, including the directory the updater runs from. It refreshes Claude alias pins only
in projects already recorded as wired, and only when a pin changed, so an update that changes nothing
touches no settings file. To wire a project, run Model Gateway's `env --write-project` inside it. Remote Control compatibility points the base URL at `api.anthropic.com`, so the
Codex/Grok rows disappear from `/model`; Claude Code can persist an explicit id such as
`/model claude-gpt-5.6-terra`, but that does not prove a later request reaches Model Gateway. Normal
gateway mode is the verified inference path.
Gateway wiring changes apply to new Claude Code sessions, so restart affected sessions. Before any
mutation, the updater runs a discovered Claude Code command once. It tries `claude` from `PATH`, then
known desktop-app locations, including the Windows MSIX package cache and `~/.local/bin/claude` on macOS.
If none work, the updater stops before refreshing marketplaces, updating plugins, or invoking the gateway
updater. Use `--claude <absolute claude.exe path>` to override discovery; an explicit path that fails stops
the run rather than guessing past it. Check and dry-run stay non-mutating. It continues after individual
update failures and prints the failing commands with one failure detail in the summary.

## Gateway rename migration

If the updater finds the retired `codex-gateway` install, it stops before refreshing plugins, running setup, or changing wiring. Close every Claude Code session using Codex. From a terminal, run the updater's deferred migration command from the installed Quartermaster plugin:

```sh
node "${CLAUDE_PLUGIN_ROOT}/bin/update-toolshed.js" --migrate-model-gateway --confirm-sessions-closed
```

It installs `model-gateway` at each legacy scope, moves only `~/.claude/codex-gateway` state, runs setup, ensure, and doctor, rewires recorded projects, then retires the legacy registry rows. The confirmation is deliberate: the command does not stop the shared gateway or change its state while another session may still use it.

Before changing anything, use this for a read-only report:

```sh
node "${CLAUDE_PLUGIN_ROOT}/bin/update-toolshed.js" --check
```

Use this to show every command without changing anything:

```sh
node "${CLAUDE_PLUGIN_ROOT}/bin/update-toolshed.js" --dry-run
```

## Freshness guard and reload boundary

Quartermaster's freshness hooks report cached availability and loaded-version mismatches. Their notices
are advisory: they do not install plugins or restart Claude Code. Run this updater when you want the
installed versions changed, then `/reload-plugins` or restart Claude Code and resubmit the prompt. The
maintenance commands remain available when a freshness notice appears. For an emergency only, start
Claude Code with `EIGENWISE_TOOLSHED_FRESHNESS_BYPASS=1`; remove that override once updates are possible.

An update does not replace the plugin code already loaded by an open Claude Code session. Tell the user
exactly what the updater reports: run `/reload-plugins` in each affected session, or restart Claude Code
if reload does not pick up the new version. User-scoped installs affect every open session; project and
local installs affect sessions open in their recorded project directories.

## Optional marketplace auto-update

Marketplace auto-update is optional. To enable it, open `/plugin`, open **Marketplaces**, select
`eigenwise-toolshed`, and choose **Enable auto-update**. Claude Code checks after session start with a
random delay of up to 10 minutes. Third-party marketplaces start with auto-update off, and an already-open
session still needs `/reload-plugins` or a restart after an update lands.

Do not add this updater to SessionStart. It intentionally changes installed plugins and downloads the
codex gateway dependency, so automatic startup work stays non-mutating.
