gum v1.0.3
The MCP server now speaks protocol revision 2026-07-28. Three details change on the wire, project-local profile resolution asks for the client's roots a different way, and the capability catalog is refreshed from the upstream discovery documents.
Highlights
- MCP server upgraded to revision 2026-07-28. Clients on the older revision are
resources/readon an unknown URI answers with JSON-RPC-32602instead oftools/listalways carriesreadOnlyHintandidempotentHint, including- Catalog refreshed: 222 operations before and after, seven of them changed.
served by the same code path.
-32002.
when the value is false.
Install
curl -fsSL https://raw.githubusercontent.com/ehmo/gum/main/install.sh | GUM_VERSION=v1.0.3 bash
gum --version
gum doctorOr through the tap:
brew install ehmo/tap/gumUpgrade notes
No config, catalog ABI, or CLI change. Three MCP wire details change with revision 2026-07-28, and gum tracks the new shape rather than pinning the old one.
- A client that matches
-32002to detect an unknown resource URI has to - A client that reads an absent
readOnlyHintas "unknown" now sees an - An unknown method over stdio answers
-32601.
accept -32602. Reading gum://help/nosuchtopic now returns the Invalid Params code.
explicit false on tools that are not read-only. destructiveHint and openWorldHint keep their present-or-absent behaviour.
Project-local profile resolution costs one extra round trip on the first tool call of a session. Revision 2026-07-28 forbids a server from asking for the client's roots while it serves a request, so gum returns an input request with the tool result and the client answers on a retry of the same call. The resolution rules, the _meta.gumRoot selection in multi-root sessions, and the PROJECT_ROOT_REQUIRED envelope are unchanged. Callers that do not use project-local profiles see no extra traffic.
Changed
- The MCP server is built on
modelcontextprotocol/go-sdkv1.7.0, which - Project-local profile lookup obtains the client's roots through an input
- The capability catalog was regenerated from the upstream discovery documents.
implements MCP revision 2026-07-28.
request carried on the tool result, because the revision removed the server-initiated roots/list call it used before.
222 operations before and after: none added, none removed, seven changed. Six gained an optional upstream request field (groupIdFilter, includeSensitiveData, showOwnOrganizationOnly, eventLabelVersion, and markupSyntax on two chat operations), along with the enum values workspace_studio and writerWithoutPrivateAccess. One Drive operation description was reworded. No risk class, scope, auth strategy, or required argument changed, so no existing call behaves differently.
Security
No vulnerability fixes. govulncheck reports 0 vulnerabilities that gum's code calls. It reports one advisory against a module in the graph, GO-2026-5932, which marks golang.org/x/crypto/openpgp unmaintained. gum imports no symbol from that package, and the advisory has no fixed version.
Known limitations
- macOS release binaries are not notarized: the signing secrets are not
- The tap formula is bumped by hand after a release publishes, so it can trail
provisioned, so goreleaser skips the notarize step. Check with spctl --assess --type execute --verbose gum. If it rejects the binary, clear the quarantine attribute: xattr -d com.apple.quarantine gum. The tap formula does this for you on install.
a new tag by a short window.
Token savings
Measured on the in-tree release fixtures before tagging. This release does not change output shaping, so both rows match v1.0.2.
cd apps/gum
gum gain --fixture-replay --format=toon
gum gain --fixture-replay --format=json| Default format | Total calls | Total tokens in | Total tokens saved | Aggregate savings |
|---|---|---|---|---|
toon |
10 | 3,922 | 0 | 0 % |
json |
10 | 3,922 | -12 | 0.31 % overhead |
Reproducibility
git checkout v1.0.3
cd apps/gum
CGO_ENABLED=0 go build -trimpath -ldflags='-s -w -X main.version=v1.0.3' ./cmd/gum
sha256sum gum