AI agent operations guide · Updated 2026-06-27

Agent Tool Permission Model Checklist: Read/Write Tools, Network Access, MCP Scopes, Browser Actions, Approval Prompts, and Audit Logs

A practical checklist for deciding what an AI agent may read, write, click, fetch, execute, remember, and log before connecting tools such as browsers, MCP servers, scrapers, codebase memory, and command runners.

Agent tools are not equal. Reading a URL, scraping a page, clicking inside a browser, writing a file, running a command, calling an MCP server, and storing memory all create different blast radiuses. A permission model makes those differences explicit before the agent acts.

This checklist connects Agent-Reach, Firecrawl, Playwright, Jina Reader, codebase-memory-mcp, Claude Code, and SkillSpector-style reviews into one practical model: classify tools by authority, define approval prompts, scope network access, separate read and write paths, log every privileged action, and keep humans accountable for the final decision.

RepoDaily verdict

Start agents with read-only, source-grounded tools. Add network, browser, write, command, MCP, and memory permissions only when the task needs them, with owner approval, denied paths, scoped tokens, audit logs, and a stop path. A useful agent tool model is not about maximum autonomy; it is about explicit, reviewable authority.

RepoDaily fixture evidence: simulated permission boundary test

This is not a benchmark of Claude Code, Codex, Playwright, Firecrawl, or any single AI product. RepoDaily created a small local test fixture to check whether the permission model in this article returns the expected allow, prompt, or deny decision for simulated tool actions.

Evidence itemFixture resultWhy it mattersLimitation
Simulated permission cases14/14 simulated tool-action scenarios returned the expected allow, prompt, or deny result.This validates the article’s permission model, not a specific AI tool.Deterministic local fixture only; no live agent service is connected.
Secret-like file boundaryRequests for `.env.example`, `private-data/`, and `forbidden-paths/` return deny.Secret-like files and private data need stricter rules than ordinary repo reads.Uses fake values only; no real credentials or customer data.
State-changing action boundaryWriting files, MCP write actions, and production-like browser actions require prompt instead of silent allow.A read-only research task should not silently turn into write or account-level authority.The fixture models action classes rather than executing real browser or MCP workflows.
Command boundary`python -m pytest` is allowed; a destructive command such as `rm -rf fixture-repo` is denied.Safe validation commands and destructive commands need different treatment.The destructive command is evaluated as a string and is not executed.
Memory side effect boundaryMemory write is denied unless retention and deletion rules are defined.A task that only reads files can still create long-term risk if it persists private context.No live memory server is used in this fixture.
  1. Read this section as a RepoDaily self-test of the checklist’s permission rules, not as a score for any vendor or model.
  2. The test supports the page recommendation: start with narrow read access and require prompt or deny decisions for state-changing, off-scope, secret-like, or persistent actions.
  3. The evidence is intentionally small and local, so the result is a reproducible sanity check rather than a full product benchmark.

Quick matrix

Permission surfaceDefault policyApproval triggerAudit evidence
Read filesAllow scoped repo reads for approved pathsSecrets, private data, ignored files, customer logs, or unrelated reposFiles read, denied paths, source citations
Write filesDeny by default outside task branch or sandboxAny source, config, migration, dependency, release, or generated-file changeDiff, owner approval, test output
Network fetchAllow approved public docs or pinned sourcesPrivate URLs, auth cookies, internal services, customer systems, or unknown domainsURL list, response source, data owner
Browser actionRead-only browsing first; no personal profileClicks, forms, downloads, logins, admin panels, uploads, paymentsBrowser profile, actions, screenshots/traces
Scraping/crawlingLimit depth, domain, rate, and data typeLogin walls, copyrighted assets, personal data, or large-scale crawlingDomain allowlist, crawl settings, output path
Command executionAllow lint/test/read-only commands; prompt for mutationInstall, delete, deploy, migrate, chmod, curl pipe, credential, or network commandsCommand log, approvals, exit status
MCP serverEnable one server at a time with least privilegeServer can read files, browser, tickets, database, cloud, email, or memoryServer inventory, scope, token owner
Memory writeDeny until retention and deletion are definedStoring user data, repo secrets, customer context, or cross-tenant factsMemory key, source, retention, deletion proof

Tool permission maturity scorecard

Score a workflow before giving agents new tools.

Control0 points1 point2 pointsOwner question
Tool inventoryUnknown tools activePartial listTool, owner, scope, token, version trackedWhat tools can the agent call today?
Read/write splitSame permission for all actionsSome promptsRead, write, command, network, memory separatedWhich action changes state?
Approval promptsAd hoc confirmationsSome risky promptsRisk-based prompts with stop criteriaWhen must a human approve?
Network scopeAny URL allowedSome domain rulesAllowlist, depth, auth, and data-type rulesWhat domains are allowed?
Audit loggingNo reliable logsPartial transcriptTool calls, inputs, outputs, approvals, and diffs loggedCan we reconstruct a run?
Revocation pathNo disable planManual disable knownOwner can disable tool, token, memory, or browser profileHow do we stop this tool now?

30-minute agent tool permission test plan

Use this plan before enabling a new browser, MCP, scraper, memory, or command tool.

0–5 min: tool inventory

List tools, owners, tokens, versions, scopes, and whether each can read, write, execute, browse, fetch, or remember.

Success checkEvery active tool has an owner and authority class.

5–10 min: permission table

Write default policy, approval trigger, denied paths/domains/commands, and audit evidence for each tool.

Success checkThe model is reviewable before the run.

10–18 min: controlled task

Run one low-risk task and capture tool calls, files, URLs, commands, browser actions, diffs, and memory events.

Success checkThe run creates evidence without surprise authority.

18–24 min: abuse probe

Try a near-boundary request: forbidden path, off-domain URL, write action, memory write, or risky command.

Success checkThe tool stops, prompts, or refuses as designed.

24–30 min: rollout decision

Decide allow, restrict, disable, or require another test; update logs, owners, and incident response notes.

Success checkThe permission change has owner, scope, and rollback path.

Permission design flow

  1. Start from the task: what information must the agent read, what state must it change, and what human decision will remain accountable?
  2. Classify every tool as read, write, execute, network, browser, MCP, memory, or release/deploy authority.
  3. Assign the minimum permission for the task and write the denied paths, denied domains, forbidden commands, memory retention rule, and stop action.
  4. Add approval prompts for actions that change files, run commands, leave the local machine, store memory, touch secrets, or affect users.
  5. Run one controlled task and inspect logs: tool calls, file access, URLs, browser actions, commands, diffs, memory writes, and reviewer decisions.
  6. Promote the permission model only for task classes where it improves outcomes without hiding authority or increasing review burden.

Scenario table

ScenarioMinimum permissionStop if
Summarize public docsNetwork fetch from approved URLs and source-grounded outputAgent follows links outside allowlist or stores private notes
Automate browser QADedicated browser profile, local/dev domains, screenshots/traces retainedAgent logs into personal/prod account or submits forms unexpectedly
Fix small code bugScoped file read/write, focused test command, no deploy toolsAgent touches secrets, migrations, infra, or unrelated files
Crawl target site for agent researchDomain, depth, rate, and output limitsAuth pages, personal data, large downloads, or asset copying appear
Use codebase memoryRead memory only for scoped repo and taskMemory writes or retrieves cross-tenant facts without approval
MCP server for tickets or docsSingle scoped token and read-only firstServer can write tickets, change repo state, or access unrelated systems
Security skill evaluationRead-only skill review and evidence outputAgent executes exploit-like commands or mixes demo secrets with live environment

Tool permission risk checklist

Tool authority collapse

When read, write, execute, network, and memory permissions are bundled together, humans cannot see where risk increased.

Prompt-only governance

Telling an agent to be careful is not a permission model. Approval gates, denied paths, and logs must exist outside prose.

Browser session leakage

A browser tool with personal cookies can turn a harmless research task into account-level authority.

MCP scope creep

One MCP server may combine file, ticket, database, and cloud capabilities. Scope and inventory each server.

Unlogged action

If a privileged tool action is not logged, incident response becomes guesswork.

Memory side effect

A read task can still create long-term risk if the agent writes memory or stores private context.

Permission implementation patterns

Read-only first

Begin with source-grounded read tools and add state-changing tools only after one successful controlled run.

Action classes

Define read, write, execute, network, browser, MCP, memory, and release/deploy classes with separate approvals.

Allowlist plus denylist

Use domain allowlists and path denylists together; one without the other leaves gaps.

Dedicated browser profile

Use a separate browser profile for agent actions and log clicks, forms, downloads, and screenshots.

Tool-call audit bundle

Store tool name, input, output summary, approval, owner, timestamp, and resulting diff or artifact.

Permission PR

Treat new tools or wider scopes as a reviewed change with owner, rollback, and incident response notes.

FAQ

Short answers for teams designing agent tool permissions.

What permission should agents start with?

Read-only, source-grounded tools. Add write, command, browser, MCP, network, and memory permissions only when a task proves it needs them.

Are approval prompts enough?

No. Prompts help, but you also need denied paths, scoped tokens, browser isolation, tool inventories, audit logs, and a stop path.

How should MCP tools be reviewed?

Review each server by owner, token, scope, data access, write authority, logs, and disable path.

Why separate memory permission from read permission?

Because a read-only task can still create long-term risk if the agent persists private or stale context into memory.

Related radar

AI Agent Tools Radar

Related RepoDaily briefs

Sources

  1. Agent-Reach
  2. Firecrawl
  3. Playwright
  4. Jina Reader
  5. codebase-memory-mcp
  6. Claude Code docs
  7. Claude Code MCP docs
  8. SkillSpector

Feedback

Did this page help you make a decision?

Anonymous feedback helps RepoDaily improve what is actually useful.

Report outdated or missing evidence