User guide / MCP server

Default grants

Development reference · View source

To let agents read without opening :mcp in every project, give them Read in your configuration:

mcp:
  default_grants:
    agent: [read]

A workspace that starts with no grant record for agent grants it Read for as long as it runs. Its own decisions take precedence: a grant applied with Remember replaces the default there, and revoking with x, or applying with nothing selected, records a revocation that keeps the default off in that workspace until you apply a grant again. A grant applied without Remember lasts for the session and leaves the default in place for next time. :mcp says when a grant comes from the default. Revocations made before this release removed the record instead of keeping one, so revoke again where a new default should stay off. Revocation records stay in the private store until a grant replaces them.

Read is the only default. Write cannot be one: it is decided per workspace, and naming write is a configuration error. The capability names earlier releases used here (terminal_read, editor_context_read, buffer_edit, terminal_propose, agent_channel) are still accepted. A list naming both terminal_read and editor_context_read means Read; any other grants nothing, since Read covers more than it named, and Runyte reports it when the workspace starts. Runyte reads the setting when a workspace host starts, so a change applies to workspaces started afterwards; a persistent session keeps the value it started with until runyte --session-restart. It creates the private store and the named identity if they do not exist yet; a default that cannot be applied is reported and leaves the workspace’s own grants in place. A grant covers the same content and has the same limits whether it came from a default or from :mcp. The configuration file is the one way to grant access without physical input, so it deserves the same care as the rest of your configuration.