Fields
| Name | Type | Required | Description |
|---|---|---|---|
name | string | yes | Unique identifier within the tenant. DNS label format: [a-z][a-z0-9-]{0,62}. |
description | string | no | Human-readable description shown in the dashboard. Max 1024 bytes. |
git_name | string | no | Git author name for agents using this profile (e.g. acme-deploy-bot). Empty uses the default bot name. |
git_email | string | no | Git author email for agents using this profile. Empty uses the default bot email. |
anthropic_api_key_secret | string | no | Secret name for the Anthropic API key. Empty falls back to the tenant-wide ANTHROPIC_API_KEY secret. |
signing_key_secret | string | no | Secret name for the Ed25519 commit signing key. Empty falls back to the tenant-wide SERVICE_SIGNING_KEY secret. |
github_token_secret | string | no | Secret name for a GitHub token. Empty uses a token minted from the installed app. |
claude_oauth_token_secret | string | no | Secret name for a Claude subscription OAuth token. |
claude_oauth_refresh_token_secret | string | no | Secret name for a Claude OAuth refresh token. |
openai_api_key_secret | string | no | Secret name for an OpenAI/Codex API key. |
ssh_public_keys | string[] | no | SSH public keys for murmur ssh access, in authorized_keys format. |
steering_policy | string | no | Name of a steering policy that additionally gates events driving this profile’s agents. The narrower of this and the event repo’s policy wins, so a permissive repo policy never loosens a locked-down profile. Empty applies the repo policy only. |
grants | Grant[] | no | Access grants controlling who may assume this service profile. |
Grant fields
Each entry ingrants specifies who can assume the service profile and what permissions they hold. See authorization for full details.
| Name | Type | Required | Description |
|---|---|---|---|
groups | string[] | conditional | Group names in the same tenant. At least one of groups or users is required. |
users | string[] | conditional | GitHub logins. At least one of groups or users is required. |
inline | object | conditional | Inline permission list. Exactly one of inline or role is required. |
inline.permissions | string[] | yes | Permission strings in {kind}.{verb} format (e.g. service-profile.assume). |
role | string | conditional | Named role reference, resolved at evaluation time. Exactly one of inline or role is required. |
name_pattern | string | no | Glob pattern restricting which resource names this grant applies to. Supports ${provider} and ${username} variables and trailing * wildcard. |
Examples
Create a service profile
Minimal service profile with tenant-wide fallbacks
git_email falls back to the default bot email.
Listing service profiles
Reading a single service profile
Errors
| Code | Meaning | What to do |
|---|---|---|
INVALID_ARGUMENT | name is required | Provide a name field. |
INVALID_ARGUMENT | name must match [a-z][a-z0-9-]{0,62} | The name contains invalid characters. Use lowercase letters, digits, and hyphens. Must start with a letter. |
INVALID_ARGUMENT | description exceeds 1024 byte limit | Shorten the description to 1024 bytes or fewer. |
INVALID_ARGUMENT | grants[N]: grant must specify at least one group or user | Each grant needs at least one entry in groups or users. |
INVALID_ARGUMENT | grants[N]: grant must specify inline permissions or a role reference | Each grant needs either an inline permission list or a role reference. |
INVALID_ARGUMENT | grants[N]: grant role reference must be non-empty | A grant uses role but the value is empty. Provide a role name. |
INVALID_ARGUMENT | steering_policy: steering policy "<name>" does not exist | Reference an existing steering policy, or leave steering_policy empty to apply the repo policy only. |
FAILED_PRECONDITION | cannot delete service-profile: referenced by agent | An agent or flight references this service profile. Remove the reference before deleting. |
Related
- Profiles and secrets — concept overview
- Service profiles guide — step-by-step setup from the dashboard
- Authorization — grants, roles, and permissions
- steering-policy — additionally gates events driving this profile’s agents
- Agents — the resource that references a service profile at spawn time
- Flights — multi-agent workflows that reference a service profile
murmur set— CLI command for creating and updating catalog resourcesmurmur get— CLI command for reading catalog resources