Install the immutable release
Choose amd64 for x86_64, or arm64 for aarch64 and arm64. Verify the downloaded digest against the release checksum file, then verify that GitHub's signed provenance binds the binary to null-select/cli and its tag-triggered workflow.
VERSION=v0.2.0
ARCH=amd64 # use arm64 on aarch64/arm64 systems
curl -fLO "https://github.com/null-select/cli/releases/download/$VERSION/nullselect_linux_$ARCH"
curl -fLO "https://github.com/null-select/cli/releases/download/$VERSION/checksums.txt"
shasum -a 256 --check checksums.txt --ignore-missing
gh attestation verify "nullselect_linux_$ARCH" --repo null-select/cli
install -m 0755 "nullselect_linux_$ARCH" "$HOME/.local/bin/nullselect"
nullselect versionProvenance identifies where and how the artifact was built. It does not replace review, endpoint policy, or runtime controls.
Keep the credential out of arguments and files
Copy the one-time credential from Access into an environment variable. The CLI receives only the variable name during installation. mcp doctor reads the value at runtime and verifies authentication, protocol negotiation, server identity, and tool discovery.
export NULL_SELECT_CREDENTIAL='the credential shown once in Access'
nullselect mcp doctor
nullselect mcp install --client codex
# or: nullselect mcp install --client claude-code --scope userVerified rows
Use the client paths tested from the release artifact.
User-scope native Streamable HTTP configuration stores the endpoint and NULL_SELECT_CREDENTIAL variable name. Add, inspect, remove, doctor, and post-revocation denial passed.
User- and project-scope native HTTP configuration expands the environment variable at runtime. Add, live connection, inspect, remove, doctor, and revocation passed.
The CLI can atomically add or remove its named entry in workspace .mcp.json while retaining unrelated entries and writing a backup before replacement.
Cursor, VS Code, and GitHub Copilot configuration contracts pass release-artifact install/remove tests. They are not supported application rows.
Verify an evidence packet offline
Download one signed packet from an execution in Audit, then verify it without a null.select account, gateway credential, or network connection. The verifier checks the canonical Ed25519 manifest, exact ZIP members and member digests, the complete audit hash chain, release evidence, and activation evidence. The release embeds the current production public key. The published key set supports retained rotation keys.
nullselect evidence verify null-select-pkt_….zip
# For a retained key added after this binary was released:
curl -fLo evidence-keys.json https://console.null.select/.well-known/null-select-evidence-keys.json
nullselect evidence verify --keyring evidence-keys.json null-select-pkt_….zipThe packet omits raw arguments, prompts, outputs, upstream response bodies, and secrets. Verification establishes packet integrity; it is not a certification of upstream effects that null.select could not observe.
Remove only the null.select entry
Uninstall is idempotent and targets the selected server name. File-based changes preserve unrelated JSON and create a timestamped backup.
nullselect mcp uninstall --client codex
# or: nullselect mcp uninstall --client claude-code --scope user
unset NULL_SELECT_CREDENTIALRelease boundary
Linux is the published binary matrix.
The release contains only Linux AMD64, Linux ARM64, and their checksum file. macOS and Windows builds are not customer downloads. Claude Desktop is rejected on Linux rather than inventing an unsupported path. Exact artifact digests and verification evidence are recorded in the public repository.
Managed access