Approvals and permissions
An approval policy sets how much an agent may do before asking, while a permission request is a single in-the-moment prompt you answer.
LinkCode has two related but distinct mechanisms for keeping an agent from doing things you didn't ask for: an approval policy, which you set ahead of time, and a permission request, which the agent raises in the moment for a specific action.
Approval policy
An approval policy is the standing rule for how much an agent may do before it has to stop and ask you. You set it from the shield icon menu in the composer, at the bottom of a thread. Its title names the agent — for example, "How should Claude Code actions be approved?" — and it lists the policies that agent supports, each with a short description.
This is a per-thread setting: it applies to the thread you're in, not globally to every thread with that agent. It's also per-agent — the policies differ, and so do the defaults:
| Agent | Policies | Default |
|---|---|---|
| Claude Code | Ask permissions · Accept edits · Plan mode · Auto mode · Bypass permissions | from your .claude settings files |
| Codex | Ask permissions · Sandboxed auto · Full access | Sandboxed auto |
| Pi | Ask permissions · Accept edits · Bypass | Ask permissions |
| OpenCode | its own agents (Build, Plan, any you've defined) | OpenCode's default agent |
| Grok Build | Bypass permissions (fixed) | — |
Switching applies immediately for Claude Code and Pi; for Codex and OpenCode it takes effect from the next turn, not mid-turn. A policy your account isn't entitled to (Claude Code's Auto mode or Bypass permissions, for example) is rejected and the previous policy stays.
Two agents don't ask
Grok Build runs every tool without prompts and cannot be switched — its headless mode has no way to wait for an answer. OpenCode asks only where your own OpenCode configuration says to; out of the box it runs unattended. Don't point either at a checkout you wouldn't hand over.
Permission request
A permission request is a one-off prompt: the agent wants to do something specific — run a command, write a file, fetch a URL — and is asking whether it can. It appears pinned directly above the composer, phrased as "Do you want to allow" followed by the action, with the relevant detail (a file path, a command, a URL) shown underneath.
A permission request pinned above the composer, asking to run a shell command, with numbered Allow / Always allow / Reject choices
Screenshot coming soon
/images/docs/concepts-approvals-permission.pngThe exact choices vary by agent and by request. Claude Code, for example, offers Allow, Always allow, and Reject — where "always" is a real grant that lasts for the rest of the thread, not a UI convenience. Codex additionally lets you reject and say what to do differently in the same answer.
If more than one request is pending at once, a pager lets you step through them one at a time — answering one doesn't require you to answer the rest immediately.
Some agents can also ask you a question rather than for permission: a multiple-choice prompt (single- or multi-select, with room for a custom answer) that the agent waits on the same way.
Keyboard operation
You can answer a permission request entirely from the keyboard — the exact bindings are in the keyboard shortcuts reference. One behavior worth knowing: Skip cancels the request outright, which is a distinct outcome from picking a "reject" choice, not a synonym for it.