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. A Claude OAuth credential on this profile wins over it. Empty, with no Claude OAuth credential set, runs this profile’s agents on a Murmur-provided model credential and bills the tenant for LLM Inference. |
signing_key_secret | string | no | Secret name for the Ed25519 commit signing key. Empty means agents using this profile do not sign their commits. |
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. A fallback used only when no OpenAI OAuth credential is set. |
claude_oauth_credentials | object[] | no | Additional labeled Claude OAuth credentials. Each entry has token_secret, refresh_token_secret, and label. Spawns round-robin across the legacy pair (entry 0, label default) plus these entries. |
openai_oauth_token_secret | string | no | Secret name for an OpenAI (ChatGPT) subscription OAuth access token. Preferred over openai_api_key_secret. |
openai_oauth_refresh_token_secret | string | no | Secret name for the OpenAI OAuth refresh token. |
openai_oauth_id_token_secret | string | no | Secret name for the OpenAI OAuth id_token. Codex needs it to establish the ChatGPT account. |
openai_oauth_credentials | object[] | no | Additional labeled OpenAI OAuth credentials. Each entry has token_secret, refresh_token_secret, id_token_secret, and label. Spawns round-robin across the legacy pair (entry 0, label default) plus these entries. |
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. |
user_system_prompt | object | no | Instructions appended to every turn of agents spawned with this profile, whether owned or borrowed. Set user_system_prompt.text to Markdown, maximum 16 KiB. Empty disables it. |
deny_platform_inference_fallback | bool | no | When true, agents using this profile are refused Macroscope-supplied inference for any provider the profile has no credential for. Default false: those agents run on a Macroscope-supplied key billed to the tenant. |
inference_connections | object[] | no | Inference connections agents using this profile can run opencode against, in the order added. Each entry has id (unique), display_name, base_url, api_key_secret (a tenant secret name), protocol, provider, and models. |
github_role | string | no | GitHub role (catalog kind github-role) controlling what agents may do with this profile’s GitHub credential. Empty selects the platform coding-agent role. |
allow_borrowers_to_access_all_repositories | bool | no | Default false: agents borrowing this profile get per-repository GitHub tokens capped at the borrower’s own repository role, and operations that name no repository are refused. true gives borrowing agents the full GitHub App installation token. Profile-owned agents (flights) always use the full installation token. |