# Update Toolshed

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

- Skill: `eigenwise/update-toolshed` (Agent Skill)
- Install (CLI): `npx skillmds@latest add eigenwise/update-toolshed`
- Raw SKILL.md: https://api.skillmd.com/api/skills/eigenwise/update-toolshed/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: eigenwise (https://skillmd.com/u/eigenwise)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/eigenwise/update-toolshed

---


# 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 at its recorded scope: the stable updater delegates to setup, which
preserves per-project `.claude/settings.local.json` or user-level `~/.claude/settings.json` wiring and
never escalates scope. Remote Control compatibility points the base URL at `api.anthropic.com`, so the
Codex/Grok rows disappear from `/model`; an explicit id such as `/model claude-gpt-5.6-terra` still works.
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.

