Installation
On this page
Install the warden plugin for yourself or for your whole team, check that it works, and remove it again.
Prerequisites#
| You need | Why | How to check |
|---|---|---|
| Claude Code | Warden is a Claude Code plugin. Its review gate also runs claude on the command line. | claude --version |
| git | Warden works with branches, worktrees and commits. | git --version |
| Bun 1.4 or newer | Warden's code runs on Bun. | bun --version |
Install Bun from bun.sh, or run bun upgrade if you have an older version.
If Bun is missing or too old, warden turns itself off and says so at session start:
warden: Bun is not installed, so warden is off. In a terminal run: curl -fsSL https://bun.sh/install | bash (or: bun upgrade) — then restart Claude Code.If the install cannot fetch the repo#
Claude Code fetches the plugin from GitHub with git. The repo is public, so no access is needed. If the fetch fails because you have no SSH key for GitHub, tell Claude Code to use HTTPS. Add this line to your shell profile (for example ~/.zshrc), then open a new terminal:
export CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1Personal install#
Use this when only you will use warden, or to try it out.
-
In a terminal, or inside Claude Code with
/plugin, add the marketplace and install the plugin:bashclaude plugin marketplace add thucxuong/warden#stable claude plugin install warden@warden-marketplace#stablefollows thestablebranch, which holds released versions only. -
Restart Claude Code, or run
/reload-pluginsinside it.
Team install#
Use this so that everyone who opens your project gets warden. It is the recommended way for a team.
-
Add this to
.claude/settings.jsonin your project. Merge it with any keys the file already has.json{ "extraKnownMarketplaces": { "warden-marketplace": { "source": { "source": "github", "repo": "thucxuong/warden", "ref": "stable" }, "autoUpdate": true } }, "enabledPlugins": { "warden@warden-marketplace": true } }/warden:initcan write this block for you: answer yes when it asks about the team install. It copies the marketplace source you installed from. It skips the file, and says so, when it finds nowarden-marketplaceentry or when you installed from a local folder that teammates cannot reach. Then paste the block above by hand. -
Commit and push
.claude/settings.json. -
Each team member opens the project in Claude Code, accepts the workspace trust dialog, then runs
/reload-plugins(or restarts) when asked.
Each team member still needs Bun, as above. See Team setup for the other settings a team shares.
Verify the install#
-
In Claude Code, type
/warden:and check that the warden skills are listed, for example/warden:initand/warden:compose. -
In a terminal, check that Claude Code lists the plugin:
bashclaude plugin list -
Optional: to use
wardencommands in a terminal, add this alias to your shell profile:bashalias warden='"$(cat ~/.claude/plugins/data/warden-warden-marketplace/root)/bin/warden"'The
rootfile is written at the start of each Claude Code session, so start one session first. Then:bashwarden versionIt prints the installed version, for example
{"version":"0.6.1"}.
Inside Claude Code, the project's agent can run warden directly; it does not need the alias.
Your tools and the worktrees folder#
Each task runs in a worktree in <your repo>/.worktrees/<task>, which /warden:init adds to .gitignore. A test runner, linter or formatter that does not follow .gitignore would see every task's copy of the code there: add .worktrees/ to its ignore list. See Troubleshooting.
Next: set up your project with the Quick start.
Uninstall#
-
Remove the plugin and the marketplace:
bashclaude plugin uninstall warden@warden-marketplace claude plugin marketplace remove warden-marketplace -
For a team install, also remove the
warden-marketplaceentry and thewarden@warden-marketplaceline from.claude/settings.json, and commit. Otherwise Claude Code offers to install it again. -
To remove warden from your project as well, delete what
/warden:initand the runs created, and commit:- the
.warden/folder scripts/warden-setup.sh- the lines
.warden/state/and.worktrees/in.gitignore - the task worktrees, in
<your repo>/.worktrees/(before 0.8, in<your repo>.worktrees/next to your repo): remove each withgit worktree remove <path> - any
.worktreesentry you added to your tools' ignore lists - from versions before 0.8, the
<your repo>.worktreesentry underpermissions.additionalDirectoriesin.claude/settings.local.json
- the
Warden keeps per-machine data in ~/.claude/plugins/data/warden-warden-marketplace/. You can delete that folder too.