Repository navigation
Releases: shipyard/shipyard-cli
Release list
v1.10.0
Highlights
shipyard upgrade(aliasshipyard update): installs the latest release and shows its release notes. A Homebrew install runsbrew upgrade shipyard; any other install downloads the binary, checks it against the release'schecksums.txtand replaces itself. Add--prereleaseor--forceas needed. (#71)- New-version notice: after a command finishes, at most once a day, the CLI says when a newer release is out. It only prints to a terminal's stderr and never in CI or inside AI coding agents. Turn it off with
SHIPYARD_NO_UPDATE_CHECK=1orupdate_check: false. (#71) - Find out why a build failed from your AI assistant: new MCP tools
get_failure_detailsandget_build_logs, plus crashed-container logs fromget_logswithprevious: true. (#77, #80) - Signed, verifiable releases: every binary now ships with a build provenance attestation and an SPDX SBOM. See Verifying a download. (#79)
Upgrading from 1.9.0 or earlier:
shipyard updatein those versions compares versions as text and reports 1.10.0 as older. Upgrade once the way you installed (curl https://www.shipyard.sh/install.sh | bash,brew upgrade shipyard, or the Windows executable from this page);shipyard upgradeworks from then on.
MCP server
New tools
get_failure_details(environment_id, build_id?): the failure phase and reason, the failing services, Shipyard's description of config or branch errors, and excerpts from the failing build or crash logs, in one call. It says when a rebuild should help. (#77)get_build_logs(environment_id, service_name?, build_id?, kind?): full build or crash logs, for one service or all failing ones. (#77)get_build_historynow includes a failure summary for failed builds, andget_logstakesprevious: truefor a container that keeps restarting. (#77)
Changes
- The
verifyprompt uses the failure tools: when the pushed commit's build failed, it stops polling, asksget_failure_detailswhy, and fixes the cause rather than rebuilding blindly. (#80) - Every tool now has a
titleandreadOnlyHint/destructiveHint/idempotentHint/openWorldHintannotations, so clients that gate approvals on them (such as Codex inwritesmode) no longer treat read-only tools as writes. (#76) - When the CLI is out of date, the server tells the assistant, so a missing or failing tool leads to a
shipyard upgradesuggestion. (#75)
Fixes
- Server instructions now fit within Claude Code's 2048-character limit; the end of them, including the rule against printing bypass tokens, was being cut off. (#74)
Fixes
shipyard login,set tokenandset orgwork on the run that creates~/.shipyard/config.yaml. They used to fail once, pointing at ashipyard config initcommand that doesn't exist. (#72)
Docs
- MCP docs moved to
docs/mcp.md, with a quick start, example requests and a configuration reference. (#70) - Setup for Kiro, tested client versions, least-privilege recipes per client, and how to update, uninstall or roll back. (#78, #82)
SECURITY.md: how to report a vulnerability and handle credentials. (#81)
Full changelog: v1.9.0...v1.10.0
v1.9.0
Highlights
shipyard api: authenticatedgh api-style calls to Shipyard's/api/v1and/api/v2endpoints. Responses are size-capped and secrets such asbypass_tokenand kubeconfig credentials are redacted. (#65)shipyard detached deploy <application-build-uuid>: create a detached environment from an existing build, with--name, per-repo--branch repo=branchoverrides, and--build-on-commit/--build-on-commit-for. (#56)shipyard get environment <id> --bypass-token: print just the environment's bypass token, for scripts such asSHIPYARD_TOKEN=$(shipyard get environment 12345 --bypass-token) ./check.sh. (#68)- A much more capable MCP server (
shipyard mcp serve): new typed tools, a workingexec_service, and averifyprompt that checks a pushed change against its environment. Details below.
MCP server
New tools
get_build_history,get_env_vars,put_env_vars,delete_env_var,restart_service,deploy_detached,update_branches. (#65)exec_servicenow runs non-interactive commands in a service container and returns stdout, stderr and the exit code. It is off by default because it runs arbitrary commands. Turn it on withmcp.allow_exec: truein~/.shipyard/config.yaml, orSHIPYARD_MCP_ALLOW_EXEC=true. While it's off, the tool returns the equivalentshipyard execcommand instead. (#63)
Protocol
- Prompts are now implemented (
prompts/list,prompts/get) instead of only being advertised. (#59) initializesends serverinstructionsto the client, so clients get guidance without a separate rules file. (#59)- The server negotiates the MCP protocol version with the client. (#59)
verify prompt
The prompt walks an agent through confirming that the environment is serving the pushed commit, then checking the change itself against it.
- It plans first: before running anything, it proposes a test plan covering the change and its blast radius, and waits for you to approve, edit or reject it. (#68)
- It checks coverage: it maps each changed behavior in the diff to a test that actually exercises it, and reports gaps instead of calling a green suite "verified". (#67)
- The acceptance check is optional. Pass
acceptance(a command such asnpm run test:e2e, or a plain description of the expected behavior), or let the prompt use one the repository documents. With neither, it reports what it confirmed and doesn't stop to ask. (#62) - When the token fetch fails, the report names the right fix (upgrade, install, or log in). PowerShell is supported too. (#69)
Fixes
- Fixed a race in the stdio transport where a request arriving just before EOF could be dropped. (#59, #64)
Security
- Upgraded Go dependencies to fix 11 HIGH CVEs, including in
docker/cli,moby/spdystream,logrusandgolang.org/x/net. (#57) - Upgraded
golang.org/x/netto v0.59.0 for GO-2026-5942, a reachable DNS-parsing panic. (#60) - Releases are now blocked if
govulncheckfinds a vulnerability in the shipped binaries. (#61) - CI now scans for secrets with gitleaks. (#58)
Full changelog: v1.8.1...v1.9.0
v1.8.1
fix: let goreleaser auto-generate formula install block Custom install block referenced wrong binary name. GoReleaser auto-generates the correct platform-specific rename.
v1.8.0
Major additions
- This release adds initial support for using natural language to perform various tasks with the CLI. The new
mcp servecommand starts an MCP server and allows to connect with any LLM application that knows how to communicate over MCP (Model Context Protocol). - There is a new
updatecommand for updating the CLI binary in-place when a new version is available.
v1.7.0
Major additions
- This release adds a new
telepresence connectcommand, which allows to start thetelepresenceservice quickly. Note that thetelepresencebinary must be in the PATH.
v1.6.0
Major additions
- This release adds autocomplete for environment IDs. Now, you can not only use autocomplete to complete commands and arguments but also environment IDs (where applicable) by hitting and getting a list of available environment IDs. You can also type the first few characters and let the CLI complete the ID for you.
Other changes
- The CLI now properly handles the
orgvalue provided by custom config files or as a flag to most commands.
v1.5.0
Major additions
- This release adds volume and snapshot support. Refer to the README for documentation on what you can do with volumes and snapshots.
Other changes
- The CLI now properly handles config values provided by custom config files
v1.4.0
Major addition
This release introduces the login command for a quick browser-based authentication flow.
Smaller changes
When there is more than one page in a table of resources, such as environments, the CLI informs the user which page is next.
Some status messages have been adjusted (when environments get queued for restart and rebuild).
The CLI now prints the stack trace on any panics.
Users may run some general help commands without having authenticated to the CLI.
The Dockerfile now has instructions to inject the version and Git commit into the binary in the container.
Some third-party dependencies have been updated.
Full Changelog: v1.3.1...v1.4.0
v1.3.1
This release fixes an issue where the CLI incorrectly looked up a pod name when given a service name that was
different from how it is defined in the Compose file. Now the CLI properly checks if the service exists and suggests a similarly named existing service in case of a typo.
v1.3.0
- Added a new
visitsubcommand that looks up an environment by ID and opens a web browser at its URL - Fixed a regression with the API token lookup - the
SHIPYARD_API_TOKENenvironment variable works again (its priority is higher that the config's value) - The CLI no longer drops a user into a
shshell when users don't provide command arguments toexec - Renamed all packages to allow third parties to import packages from the CLI into external code
- Minor UI, error message, and help text improvements