Skip to main content

Permissions

By default, TF Code allows all operations for Build and restricts TF Engineer and TF Orchestrate appropriately. You can configure fine-grained control per agent.

Permission Values​

ValueBehavior
allowAgent performs the action freely
askAgent asks for your confirmation before acting
denyAgent cannot perform the action at all

Permission Keys​

KeyTools it gates
readread
editwrite, edit, apply_patch
globglob
grepgrep
listlist
bashbash
tasktask
external_directoryAny tool reading/writing outside the project worktree
todowritetodowrite, todoread
webfetchwebfetch
websearchwebsearch
lsplsp
computercomputer (OS GUI control — defaults to ask; see Computer Use)
skillskill, skill_manage
agentagent
looploop
tfcode_configtfcode_config
questionquestion

Most keys accept a shorthand action ("allow" | "ask" | "deny") or an object of glob/pattern → action for fine-grained control.

Configure​

Global defaults:

{
"permission": {
"edit": "ask",
"bash": "ask"
}
}

Per-agent overrides:

{
"permission": {
"edit": "ask"
},
"agent": {
"build": {
"permission": {
"edit": "allow"
}
}
}
}

Bash Command Patterns​

Control specific bash commands:

{
"agent": {
"build": {
"permission": {
"bash": {
"*": "ask",
"git status *": "allow",
"git push": "ask"
}
}
}
}
}

Rules are evaluated in order — the last matching rule wins. Put * wildcard first, specific rules after.

MCP Tool Patterns​

Permission keys are matched as wildcard patterns against tool names, including MCP tools:

{
"permission": {
"mymcp_*": "ask",
"mymcp_search": "allow"
}
}

MCP tools are registered with the server name as prefix: "myserver_*" matches all tools from that server.