Saphan StudioDocs
Reference/Command reference

saphan config

Mint and inspect ~/.saphan/config, the canonical identity file (config-mint)

saphan config

Mint and inspect ~/.saphan/config, the canonical identity file (config-mint)

saphan config

Subcommands

SubcommandWhat it does
saphan config initMint ~/.saphan/config's identity: git-first prompt, else a system proposal — identity.actor is always human-confirmed
saphan config setSet one key in ~/.saphan/config (git-identical: git config <key> <value>)
saphan config showShow the effective config-v1 identity/engine/workspace settings

saphan config init

Mint ~/.saphan/config's identity: git-first prompt, else a system proposal — identity.actor is always human-confirmed

saphan config init [flags]

Interactive (a real TTY, no --from/--actor given): offers git's own user.name/user.email first, behind a yes/no question (MANDAT.2's "git-first ZA PYTANIEM"); answering no (or git having nothing set) falls to a system proposal via getpwuid(getuid()) — login + GECOS, POSIX, never a parsed id or dscacheutil call. Whichever source wins, identity.actor is ALWAYS confirmed at its own prompt with edit (MANDAT.4's hard blade): auto-adoption of either proposal is forbidden even when the operator answered yes above — that only picked which proposal feeds the prompt's default.

Non-interactive (CI-safe, no TTY prompting either way): --from git|system adopts that source directly with ZERO prompt (the flag itself IS the human's decision); or pass --actor/--display-name/--email explicitly. An incomplete source (e.g. --from git with no git user.name configured) refuses named, nothing written.

Options

OptionTypeDefaultDescription
--actorstringunsetnon-interactive: explicit identity.actor (bypasses lookup and any prompt)
--display-namestringunsetnon-interactive: explicit identity.display_name
--emailstringunsetnon-interactive: explicit identity.email (optional)
--fromstringunsetnon-interactive: git | system — adopts that source directly, zero prompt

saphan config set

Set one key in ~/.saphan/config (git-identical: git config <key> <value>)

saphan config set <key> <value>

Write ONE dotted key to ~/.saphan/config, preserving every other key the file already carries — the same round-trip discipline git config <key> <value> gives its own file.

Known keys: identity.actor canonical actor identity identity.display_name UI-only display name identity.email optional email engine.binary engine binary path workspace.default default workspace path workspace.worktree_grant_class declared permission-grant class for worktree provisioning run.binary agent backend binary (claude/codex) run.env comma-separated env var names passed to the backend run.laws absolute path to the standing-law index run.grant deprecated: permission-grant file path (use workspace.worktree_grant_class) run.confinement who jails a spawned agent: engine or vendor run.role_liveness_freshness how recent counts as live for dispatch locks (Go duration) run.transcript_streaming stream-json for streaming JSONL, empty for legacy single-object run.git_user_name git author/committer NAME every spawned leg commits as run.git_user_email git author/committer EMAIL every spawned leg commits as store.backend storage backend: sqlite (default) or postgres store.postgres_dsn_env env var NAME carrying the Postgres DSN (never the value itself) class.law_db_name CouchDB database name for law material class.work_db_name CouchDB database name for working material class.record_db_name CouchDB database name for the record class.telemetry_db_name CouchDB database name for telemetry evidence.base_url CouchDB server base URL evidence.db_name CouchDB database name evidence.couchdb_credentials_env env var NAME carrying CouchDB credentials (never the value) oauth.mode self-issued (default) or external oauth.issuer external authorization server issuer URL trust.enforce signed-instruction enforcement: off | warn | enforce org.supersede_policy organisation supersede policy: flag | refuse-merge | owner-decides server.listen host:port bind address (ambiguous host-less values refused) server.public_base_url the origin this engine asserts as its OAuth issuer (never derived from a request) server.trusted_proxies comma-separated CIDR blocks whose X-Forwarded-*/Forwarded: this engine believes (adds to loopback) headroom.warn_usd fleet-capacity pre-flight warning threshold (USD) fleet.ssh_host_key_policy fleet-wide SSH host key policy: refuse | accept_rotation scheduler.host_max_live per-host live-run ceiling scheduler.exhausted_window_hours lane-state $0 heuristic window (hours) scheduler.usage_probe_after_exhausted policy for usage probe after lane exhaustion probe.model.claude-code comma-separated probe model list for claude-code backend probe.model.codex comma-separated probe model list for codex backend dispatch.model.<role>.<backend> default dispatch model for a role and backend dispatch.effort.<role>.<backend> default dispatch effort for a role and backend dispatch.verbosity.<role>.<backend> default dispatch verbosity for a role and backend: terse | normal | narrative verify.full.argv full verification suite command (comma-separated) verify.full.report full verification report kind verify.full.report_path full verification report file path/glob verify.full.timeout full verification wall-clock timeout verify.affected.argv affected-path verification command (comma-separated) verify.affected.report affected-path verification report kind verify.affected.report_path affected-path verification report file path/glob verify.affected.timeout affected-path verification wall-clock timeout verify.provision.<alias>.source absolute host-local path of a document the suite swears by verify.provision.<alias>.dest where that document lands in the measured tree (tree-relative) lane.<alias>.base_url lane endpoint base URL lane.<alias>.credentials_env env var NAME for lane credentials (never the value) lane.<alias>.credentials_file absolute path to host-local credentials file host.<id>.ssh_host_key_policy per-host SSH key policy override: refuse | accept_rotation

saphan config show

Show the effective config-v1 identity/engine/workspace settings

saphan config show [flags]

Print every config-v1 field this operator has set. --provenance names WHICH tier produced identity.actor — flag (--actor here, a preview of what an act verb would resolve), env (SAPHAN_ACTOR), file (~/.saphan/config), or unset (the tier an act verb without any of the above would refuse on, MANDAT.4). Every other field (display_name, email, engine.binary, workspace.default, run.binary/env) has only two possible tiers: file or unset.

Options

OptionTypeDefaultDescription
--actorstringunsetpreview identity.actor's resolution as if this verb were an act verb invoked with --actor (source: flag)
--provenanceboolfalseprint each value's source tier alongside it

On this page