Introduction

Welcome to the fourth unit of Foundation — Getting Started with Claude Code! We have covered a lot of ground already: we understand what Claude Code is, how to start and manage sessions, and how to control our environment using essential commands like /status, /model, and /context. Now, we are ready to explore what makes Claude truly powerful: its agentic tool use.

In this lesson, we will discover what it means for Claude to be agentic and examine the tools it uses to accomplish tasks autonomously. Rather than simply suggesting code for us to implement manually, Claude Code can create files, modify existing code, execute commands, and even search the web. We will see these tools in action and understand how the permission system keeps us in control.

What Does "Agentic" Mean?

The term agentic refers to Claude Code's ability to act autonomously on our behalf rather than merely providing suggestions. When we describe a goal, Claude does not just tell us what to do; it actually does it by selecting and using the appropriate tools.

Think of the difference between a traditional coding assistant that tells us "write this function here" and Claude Code that actually writes the function. We provide the destination, and Claude takes the wheel, making decisions and performing actions to get us there.

This autonomy extends across the entire development workflow. Claude can create new files, read and analyze existing code, modify files with surgical precision, execute shell commands, and fetch information from the web. Each action uses a specific tool, and Claude decides which tools to employ based on our goals.

Claude's Toolbox

Claude Code has access to several specialized tools organized into categories:

File Operations:

  • Read - Examine files (code, images, PDFs, notebooks)
  • Write - Create new files
  • Edit - Modify existing files with precise string replacements
  • Glob - Find files using patterns (e.g., **/*.ts)
  • Grep - Search file contents with regex

Code Execution:

  • Bash - Execute shell commands
  • BashOutput - Monitor background processes
  • KillShell - Terminate processes

Web & Search:

  • WebFetch - Fetch and analyze web content
  • WebSearch - Search for current information

Additional capabilities include:

  • - Launch specialized agents and manage task lists
Discovering Available Tools

An important meta-skill: you can always ask Claude what tools it has available. This transparency helps you understand what Claude can do in your current session:

The response confirms which tools are active and ready to use. This is valuable for verifying Claude's capabilities or refreshing your memory during a session.

Creating Files with Write

Let's see tools in action. Watch what happens when we ask Claude to create a simple Python file:

Several important details emerge here. First, Claude automatically chose the Write tool—we did not specify this. Second, before making any changes, Claude shows us a preview of what will be created. This is the permission system in action.

Notice the three options:

  1. Yes - Approve this specific operation
  2. Yes, allow all edits during this session - Trust Claude to make changes without asking again
  3. No, and tell Claude what to do differently - Reject and provide feedback

Once we select "Yes," Claude proceeds:

Modifying Files with Edit

Creating new files is essential, but what about changing existing ones? This is where Edit shines. Unlike Write, which creates files from scratch, Edit makes targeted changes to existing files without rewriting the entire content.

Let's modify our hello.py file:

Notice several important details here. First, Claude automatically reads the file before editing it to understand the current content. Then it uses the Edit tool to make the change. The preview shows us a diff format with line numbers: line 1 remains unchanged, and line 2 (marked with +) is being added. This precision is crucial: Claude preserves existing content while adding exactly what we requested.

After approving:

Executing Commands with Bash

Creating and modifying files is only half the story. Let's execute our Python script to see Bash in action:

Claude selected the Bash tool and determined the correct command from context. We simply said "Run it," and Claude understood what to execute. Notice that Bash also uses the permission system—before running commands, Claude shows us what will be executed and asks for approval.

After approving:

The output appears indented under the tool call, confirming the script executed successfully and showing both print statements from our file.

This demonstrates the power of agentic behavior: we gave high-level instructions, and Claude translated them into specific tool calls, executed them in the right order, and verified the results.

Tool Chaining in Action

Often, Claude uses multiple tools in sequence to accomplish a goal. This tool chaining happens automatically based on what's needed. For example, if we asked Claude to "fix the typo in config.py where 'databse' should be 'database'," here's what would happen:

  1. Claude uses Read to examine config.py and locate the typo
  2. Claude uses Edit to replace 'databse' with 'database'
  3. Optionally, Claude might use Bash to run tests and verify the fix didn't break anything

We don't need to break this down into steps. We describe the outcome, and Claude orchestrates the necessary tools. This is the essence of agentic behavior: intelligent automation of multi-step workflows.

The Permission System

The permission system provides control over Claude's actions. As we saw with hello.py, Claude pauses before making changes and presents a clear preview.

Which operations require permission?

  • File modifications (Write, Edit) always request permission by default
  • File reading (Read, Glob, Grep) typically proceeds without asking
  • Command execution (Bash) may ask depending on the command's potential impact

The three-option prompt gives us fine-grained control:

Option 1: Yes - Approves only this specific operation. Claude will ask again for the next file change. Use this when you want to review each change carefully.

Option 2: Yes, allow all edits during this session - Switches to a streamlined workflow. After selecting this, Claude will make file changes without asking for the remainder of your session. You'll still see confirmation messages, but won't need to approve each operation. This is useful when you trust Claude's approach and want faster iteration.

Option 3: No, and tell Claude what to do differently - Rejects the change and lets you provide corrective guidance. will revise its approach based on your feedback.

How Claude Chooses Tools

One of the most impressive aspects of Claude Code is how it selects the right tools for each situation. We never tell Claude "use the Write tool"; instead, we describe our goals in natural language, and Claude determines the appropriate approach.

When we say "create a Python file," Claude recognizes this requires Write. When we say "run it," Claude understands we need Bash. When we say "fix the bug in auth.py," Claude uses Read to examine the file, then Edit to apply a correction.

This abstraction is what makes Claude Code powerful. We think and communicate at the level of features, bugs, and improvements, while Claude translates those concepts into precise tool operations. The technical details happen automatically in the background.

Conclusion and Next Steps

In this unit, we have explored the agentic nature of Claude Code and the tools that power its capabilities. We learned that agentic means Claude acts on our behalf, choosing and using tools to accomplish our goals. We saw Write, Edit, and Bash in action, understanding how Write creates new files while Edit makes targeted changes to existing ones. We experienced how the permission system gives us control while enabling autonomous work, and learned when and why Claude asks for approval.

Most importantly, we discovered that we communicate our goals and Claude handles the technical details. We no longer need to think about the mechanics of file operations or command execution; we can focus on what we want to accomplish. You are now ready to practice this workflow yourself, giving high-level instructions and watching Claude transform them into concrete changes in your codebase!

Sign up
Join the 1M+ learners on CodeSignal
Be a part of our community of 1M+ users who develop and demonstrate their skills on CodeSignal