--capture-only option; they don’t need to run a local server.
sediment guide prints this bundled guide without reading configuration,
contacting a server, or changing the machine. It converts procedure links to
raw GitHub URLs pinned to the release it ships in, or to main from a source
checkout. Reading those pages requires network access. sediment --help lists
public commands; hooks invoke others.
Read the state before changing it
- Run
sediment --version. For a shared deployment, compare it with the server’s/healthversion. Use the guide from the version you operate. - Establish the task, server URL, deployment method, server account, and repository. A developer’s machine might only send capture to a remote server.
- Use
/healthto check server readiness andsediment doctor <repo>to inspect capture. Neither proves that the server received agent evidence. - Stay within the requested task. Don’t start another server, reinstall hooks, upgrade, rotate credentials, quarantine Facts, or remove data as a repair unless that change is authorized. Follow the linked procedure for changes.
Help an operator
Run server commands as the account that owns the deployment. For database commands, first set up the operator shell from the deployment procedure. An API login doesn’t configure database access. Keep operator credentials on the operator machine; give developers capture credentials only.sediment server runs in the foreground. Without an external PostgreSQL
connection, it downloads PostgreSQL on first use and owns the local database.
It stores data, credentials, and mirrors under ~/.sediment/server or --root.
Starting it provisions database roles and applies migrations. Preserve that
directory across restarts and upgrades. Plan backups before migrations or
teardown. Use the deployment’s supervisor to manage a shared server.
Help a developer
Use the server URL and capture credential that the operator supplies. Login saves credentials; installation changes Git hooks, agent configuration, and shell configuration. Run these steps when the developer requests capture.
Default
doctor checks configuration and contacts the server and origin.
It changes nothing unless you pass --fetch, which updates a notes tracking
ref. Only FAIL lines make it exit 1. A sandbox network restriction or an
unloaded capture environment can explain a failure. Use the agent procedure’s
Session checks to verify delivery. commit requires an operator credential;
no attributions before the push and notes reach the server isn’t a failure.
Preserve capture while doing repository work
- Leave the marked
sediment-attributionGit hook blocks,notes.rewriteRef, andrefs/notes/sedimentin place. Don’t bypass hooks or changecore.hooksPath. If hook files are tracked, leave Sediment’s uncommitted blocks for the developer; don’t commit, stash, or revert them incidentally. - Keep the
sedimentexecutable at its installed path. Hooks use that absolute path; source installs also depend on their checkout and virtual environment. - Preserve the
sediment envblocks in shell profiles and Sediment’s entries in Claude Code settings, Codex hooks and profiles, Cursor hooks, and pi settings. User-level agent hooks apply across repositories. - Read hook output. Sediment commands end in
|| true, so they never fail a commit or push. The marked block keeps the hook’s previous exit status. Commands after the block still run. A zero status alone doesn’t prove that capture succeeded.
Remove capture within its installation scope
uninstall <repo>removes that repository’s hook blocks and Sediment’snotes.rewriteRefvalue. Requireremoved git hooks fromin its output; a silent exit can mean that the path isn’t a Git repository.uninstall <repo> --agentsalso removes user-level agent hooks, including pi, environment files, shell blocks, and verified Codex telemetry blocks. These user-level removals affect capture across repositories. The command doesn’t remove Claude Code managed settings, fleet Git templates, or externally distributed environment settings. Follow Remove managed capture for those installations. Report skipped files; don’t claim complete removal.logoutremoves stored CLI credentials, but environment files retain their ingest token and hooks keep running. It doesn’t stop capture.- Neither uninstall form removes existing notes, remote notes, or
~/.sediment/. Anauto_install_remotesallowlist can reinstall hooks at the next Session. Remove that entry as part of an authorized teardown. Restart running agents so they stop using the earlier environment.
Keep credentials and captured content private
Don’t print credentials, paste them into chat, or commit them. Credential locations include~/.sediment/config.json, ~/.sediment/env.sh, the Fish
sediment.fish file, Codex telemetry profiles, and server environment files.
Custom server roots, shell profiles, and service settings can hold them too.
Don’t dump the process environment: it can contain SEDIMENT_INGEST_TOKEN,
OTEL_EXPORTER_OTLP_HEADERS, database passwords, and gateway credentials.
Follow Secure a deployment when handling secrets.
Capture can leave the developer machine in these forms:
- The pre-push hook sends the whole notes ref to
originonly, even duringgit push --dry-run. A push to any other remote, such as a fork, sends and fetches no notes. Notes contain commit SHAs, agent names, Session identifiers, and timestamps, including other branches’ notes. They don’t contain prompts, diffs, file paths, model names, or hostnames. - Agent telemetry goes to the Sediment server. Claude Code tool details can include paths, shell commands, edit text, and the Claude account email. Codex decisions can include patch code and tool arguments; Sediment removes the Codex account email and account identifier before storage. Cursor sends accept decisions for applied writes and a configured user identifier.
- Opt-in transcript capture sends edit text and edited-file contents. Claude Code transcripts also include refused edit text and non-agent change counts.
- If the operator routes model calls through a gateway, it captures full prompts and responses.