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.