Claude Code in Action · lesson 1 of 6
Claude Code — Overview
Anthropic's CLI/IDE agent for software engineering. Runs locally, reads/writes your repo, executes commands, integrates with MCP, supports skills/subagents/hooks/slash commands.
Surfaces
- CLI —
claudein your terminal. Interactive REPL or one-shotclaude -p "prompt". - IDE extensions — VS Code, JetBrains. Same agent inside the editor.
- Web — claude.ai/code for short coding sessions.
- Background —
claude --printfor non-interactive scripted use, hooks, CI.
Built-in tools
Claude Code's default tool kit:
- Read — read files (replaces
cat). - Edit / Write — make targeted edits or rewrite a file.
- Bash — run shell commands.
- Grep / Glob — search by content / by path.
- Agent — spawn a subagent.
- TaskCreate / TaskUpdate / TaskList — task tracker.
- WebFetch / WebSearch — fetch and search the web.
- NotebookEdit — Jupyter support.
- Plan / ExitPlanMode — plan mode.
These are first-class; MCP tools are additional.
Permission model
Every tool call goes through a permission check. Three sources, in precedence:
- CLI flags (
--allow-tool,--deny-tool). - Project settings (
.claude/settings.json). - User settings (
~/.claude/settings.json). - Enterprise managed settings.
Permission strings look like Bash(npm test:*) or Read(./src/**). The first match wins.
Session model
- A session is one conversation. Persistent until you
/clearor exit. /resumecontinues the prior session.- Each session has a working directory; sub-tools inherit it.
- Sessions can be isolated (subagent worktree, sandbox) for risky ops.
Memory: CLAUDE.md
Claude reads CLAUDE.md files at project + parent + home level on every session start. This is the durable "what this repo is and how to work in it" memory. See claude-code-md.
Why this matters for CCA-F
Domain 3 is 20% of the exam. Expect questions like:
- "Where do you put a tool permission so all teammates pick it up?" →
.claude/settings.jsoncommitted to repo. - "How do you constrain Claude to read-only review in CI?" → permissions +
--output-format json+--allowed-toolsrestrictions. - "How do you trigger a check after every Bash call?" →
PostToolUsehook.