Profiles
Edit on GitHubA profile is a named bundle of settings: a model, extensions, MCP servers, skills, permissions, consent and environment. Two profiles from one binary are two different agents.
Without any configuration, every session runs the default profile, which is empty.
Write one
[profile.review]
model = "claude-sonnet-4-5"
extensions = ["git", "mcp.github"] # MCP servers are named by their id, mcp.<name>
skills = ["review-checklist"]
consent = "once"
env = { GITHUB_TOKEN = "$GITHUB_TOKEN" } # references; the process environment wins
[profile.review.permissions]
read = true
write = falseextensionslists extension ids. An MCP server declared as[mcp_servers.github]is the extensionmcp.github. A profile that namesmcp.*ids runs only those servers.envis a table of environment variables the session's processes get. A literal value is allowed only in the user layer.permissionstakes five shorthands:read,write,net,spawn,creds.trueallows,falsedenies.[profile.default]gives the default profile content.
Use one
| How | Effect |
|---|---|
orrery --profile review | This run. |
[profiles] default = "review" | Every run without --profile. |
/profile use review in the TUI | Writes profiles.default in your user layer. |
Order: --profile, then [profiles] default, then default. A name that does not exist fails and says which profiles exist.
Inspect
orrery profile list # every profile, default first; the one in use is marked
orrery profile show review # its model, extensions, skills and env (values masked)In the TUI, /profile lists them, and /profile new, /profile edit <name> and /profile use <name> write them. A change to the extensions, MCP servers or skills applies from the next turn.