agenticlately · GH-600 Study Prep
Home Phase B Lesson 2.1
PHASE B · LESSON 2.1

Identify required tools

Before you configure or permission anything, answer the first question of every agent build: which tools does this task actually need — and which should it not have? Pick the smallest set that gets the job done. That's least-privilege, and it starts here.

~8 minread 4quiz questions Tier 1source cited
Story

The tradesperson reads the work order: "third-floor sink is leaking." Before climbing the stairs they ask one question — what does this job need? A wrench and a washer. Not the angle grinder, not the welding torch, not the electrician's meter.

Hauling the whole van up three flights would be slow — and handing a stranger a welding torch for a sink job is asking for a burnt kitchen. Picking the right minimum set of tools is the first move on every job.

An agent is the same. Before you configure or permission anything (lessons 2.2 on), you identify which tools the task requires — and, just as importantly, which it does not.

The idea, in plain English

A tool, for an agent, is a specific capability it can call to act: read a file, search the repo, edit code, run a shell command, fetch a URL, hand off to another agent. (The agent is the brain; tools are its hands, eyes, and phone.) Available tools are declared in the agent file's tools key (lesson 1.7), or restricted at run time with CLI flags.

Definition

Identify required tools = match a task to the smallest set of tools that can complete it. It comes before configuration and permissions — you can't grant least-privilege access until you know the minimum the job needs.

Two reasons it matters:

The tool families (know the shapes)

Think in families — what a tool does:

FamilyLets the agent…Needed when…
readinspect file contentsit must look at code before acting
searchfind files/text in the repositoryit must locate the right code/file
editmodify / write filesit must change code
executerun shell commands (tests, scripts)it must run or verify something
agentinvoke another custom agentit must hand a sub-task to a specialist

The literal Copilot CLI tool values (what you actually type in tools: / --available-tools), in four groups:

Differences that bite
  • grep/glob/search look inside the repo. web_fetch reaches the internet. Not interchangeable — the study guide suggests web is not a substitute for search, and search means repo/file search, not web search.
  • edit vs create vs apply_patch all change files, but some models prefer apply_patch — exclude it and those models may lose the ability to edit.
  • ask_user is useless in the cloud agent (no human); powershell is absent in the cloud agent (Linux runners only). The context decides which tools even exist (lesson 2.5).

Match three tasks to a tool set

TaskMinimum toolsLeave OUT (why)
"Summarize the open issues" (read-only)view, grep (+ a GitHub read tool)edit, apply_patch, execute — no changes, no shell
"Add a unit test for utils.py"view, grep, edit/apply_patch, bashweb_fetch, task — no internet, no subagents
"Research a library, then propose a fix"web_fetch, view, grep, editexecute if you don't want it running code yet
One-look contrast

Read-only review → no edit/execute. Code change → add edit + execute. Needs the internet → add web_fetch (which search/grep can't do). Start from the task, add the fewest tools that finish it, stop.

How you actually restrict them: the agent file's tools: list, or run-time flags --available-tools (allow-list) / --excluded-tools (deny-list). Configuring those is lesson 2.2 — here we only decide which. (Copilot can also auto-select tools, and you can force one by naming it in the prompt; skills — a SKILL.md folder loaded when its description matches the task — are a related way to add capability.)

The cert-language version

Identifying required tools means selecting, for a given task, the minimum set of capabilities the agent needs — across families like read, search, edit, execute, and agent — and excluding the rest. Tool selection is the first step of tool use, and it underpins least-privilege: an agent should be granted only the tools its scoped task requires.

Our summary · grounded in MS Learn — Agent tooling, MCP, and execution environments + GitHub Docs (Copilot CLI tool values) + naim149 study gist (verified tool families) · fetched 2026-05-30

Common confusions (read these or lose points)

Ticks this lesson done on the home roadmap. Saved in this browser.

Quiz · Lock it in

0 / 0 answered
Q1 · multiple choice

A task is "review this PR and comment — do not change any code." Which tools should you deliberately leave OUT?

Answer · B. A pure review needs read + search to inspect and find code, but must NOT carry edit or execute — least-privilege. (The study guide explicitly suggests omitting edit for review-only work.)
Q2 · multiple choice

An option says: "Use the search tool to look up the library's docs on the web." What's wrong?

Answer · C. search/grep/glob look inside the repo. Reaching the internet needs web_fetch — and web/web_fetch is not a substitute for search, nor vice-versa.
Q3 · multiple choice

Why is "identify required tools" the FIRST step, before configuring permissions?

Answer · D. Capability and safety both flow from getting the tool set right first. You can't grant least-privilege access (2.2) until you've identified the minimum tools the task requires (2.1).
Q4 · explain back

Task: "Add a unit test for utils.py and confirm it passes." In your own words, list the tool families this needs, name one tool to leave out, and say why.

Suggested answer

It needs read (view) and search (grep) to find and inspect utils.py, edit (edit/apply_patch) to write the test, and execute (bash) to run the test and confirm it passes. Leave out web_fetch (no internet needed) and task (no subagents) — every extra tool is needless blast radius. That minimal set is least-privilege in action.


  
Source · GitHub Docs (Copilot CLI tool values) + MS Learn — Agent tooling, MCP, and execution environments + naim149 study gist · fetched 2026-05-30

Unofficial study material. Not affiliated with, endorsed by, or sponsored by GitHub or Microsoft. “GH-600” and “GitHub” are trademarks of their respective owners, used for identification only.