Skip to main content
A user-secret holds one encrypted value scoped to a single developer. Unlike a tenant-wide secret, it is bound to the developer who created it and is delivered only to agents that developer spawns. User-secrets are created automatically by murmur setup when you onboard your credentials. You can also manage them with murmur secret set --user, murmur secret ls --user, and murmur secret rm --user, which take the leaf name (the part after {provider}/{username}/), or with murmur set using the full name.

Fields

The plaintext_value field is write-only. When you read a user-secret back with murmur get, the response contains name, createdAt, description, and descriptor, never the value.

Name convention

The built-in murmur-member-self tenant-binding grants each developer user-secret.read, user-secret.create, user-secret.edit, and user-secret.delete on matching {provider}/{username}/* names. read also supplies visibility in listings. The murmur setup command follows this convention automatically, producing names like: A new user-secret must use this {provider}/{username}/{LEAF} form. The server rejects any other name on creation.

Examples

Setting a user-secret via murmur setup

murmur setup creates user-secrets automatically as part of onboarding:
This encrypts your GitHub token, signing key, and any configured API keys as user-secrets under your identity prefix.

Creating a user-secret manually

With the secret command, which takes the leaf name and stores stdin’s exact bytes:
With the catalog API, which takes the full name and a base64 value:

Listing your user-secrets

The list prints one name per line. murmur secret ls --user lists your own leaves in a NAME KIND HINT table.

Reading a single user-secret

The response includes name, createdAt, and description. The value is stripped.

Deleting a user-secret

A user-secret that your user record references (e.g. through github_token_secret or secret_mounts) cannot be deleted. Remove the reference first, for example with murmur secret unmount.

How user-secrets reach agents

When you spawn an agent, the system reads your user record and resolves each referenced user-secret. The well-known credential fields map to environment variables on the agent VM: Claude and OpenAI OAuth credentials (claude_token_secret, claude_refresh_token_secret, and the openai_oauth_* fields) are subscription credentials Murmur refreshes and assigns itself. They are not exported under their stored names. Any other user-secret reaches your agents only when your user record’s secret_mounts lists it. Add one with murmur secret mount.

Errors

  • Profiles and secrets: concept overview of developer profiles and secret scopes
  • secret: tenant-wide secrets shared across all developers
  • murmur set: CLI command for creating and updating catalog resources
  • murmur get: CLI command for reading catalog resources
  • murmur setup: CLI command that creates user-secrets automatically during onboarding
  • murmur secret set: CLI command for managing tenant and developer secrets
  • murmur secret mount: deliver one of your user-secrets to every VM you spawn
  • Encryption: how secrets are encrypted at rest and in transit
  • Permissions: default authorization bindings including the murmur-member-self grant