Skip to content

Permissions

In the interactive TUI, niminal separates tools that can change your machine from tools that only inspect the workspace.

These built-in tools run without a prompt:

  • read
  • grep
  • glob
  • edit
  • write
  • skill

These normally ask before they run:

  • bash (model-initiated tool calls)
  • Extension tools that are not read-only
  • External tools that declare write, shell, or network capabilities

When prompted, press Enter for once, s for the session, p to save a project grant, or n to deny.

Composer !command and !!command run without a prompt. You typed the command yourself.

Project grants live in <workspace>/.niminal/permissions.json:

{
"allow": [
"tool:my_extension_tool",
"bash:npm test"
]
}

Keys use the form tool:<name> or bash:<command>. Grants load only when the project is trusted. Use /permissions to list grants and /permissions clear to remove them.

These command words always re-prompt, even if you remembered an earlier grant:

rm, git reset, git clean, git checkout --, git restore, sudo, curl, wget, ssh, scp, chmod, chown, kill, pkill, dd, mkfs, shutdown, reboot

Matching looks for the word surrounded by spaces inside the full command string.

/yolo and --yolo skip all approval prompts for the current process. Use /yolo off to turn it off again in the TUI.

Print mode, JSON mode, and RPC mode have no approval UI. Tools run without prompting there. Use them only with workspaces you trust, and narrow the tool list with --tools when you can.

Approval is not a sandbox: shell commands still run as your user, with your environment.