Skip to content
Domain 3
3.1%

Glossary: Claude Code

Quick-lookup definitions for the 3.1% exam domain. Each entry includes a concise definition and exam context. Follow the lesson links to dive deeper.

CLAUDE.md

The instruction file you write for Claude Code: conventions, build commands, house rules. Four scopes exist, and every discovered file is added to context rather than replacing what came before.

Exam context: Content, not configuration. It shapes behaviour and enforces nothing, which is why a prohibition that must hold belongs in a deny rule instead.

See also: 3.1 Claude Code Operation


CLAUDE.md Hierarchy

The four scopes, broadest first: managed policy, user ~/.claude/CLAUDE.md, project ./CLAUDE.md or ./.claude/CLAUDE.md, and local ./CLAUDE.local.md. Claude Code walks up the directory tree from the working directory and loads every level it finds.

Exam context: Discovered files concatenate, ordered broadest to most specific, so a nearer file is simply read last. Reading the hierarchy as a precedence chain is the domain's signature error; settings are the surface with the real chain. To stop a file loading at all, claudeMdExcludes skips CLAUDE.md and rules files by path or glob from any settings file (September 2026), managed policy files excepted. From v2.1.277 an AGENTS.md loads by default only when no CLAUDE.md, .claude/CLAUDE.md or CLAUDE.local.md exists in the working directory or above; Project instructions set to claude-md-and-agents-md in /config loads both.

See also: 3.1 Claude Code Operation


CLAUDE.local.md

Personal project instructions, kept out of version control. It sits at the most specific end of the memory hierarchy and is read after its sibling CLAUDE.md at the same level.

Exam context: The pair to .claude/settings.local.json, and easy to swap under time pressure. This one carries prose for one person on one machine; the other carries configuration. It also counts as a CLAUDE.md file, so adding one to a repository that relies on AGENTS.md switches AGENTS.md off unless Project instructions is set to claude-md-and-agents-md.

See also: 3.1 Claude Code Operation


Managed Policy File

The organisation-wide CLAUDE.md deployed by IT: /Library/Application Support/ClaudeCode/CLAUDE.md on macOS, /etc/claude-code/CLAUDE.md on Linux and WSL, C:\Program Files\ClaudeCode\CLAUDE.md on Windows. Individual settings cannot exclude it.

Exam context: The broadest memory scope, and the parallel to managed settings at the top of the settings chain. Both are the answer when something must reach every engineer regardless of local configuration, with this one still context and the settings file still enforcement.

See also: 3.1 Claude Code Operation


@path Import

The syntax that pulls another file's content into a CLAUDE.md from anywhere in it. Relative paths resolve against the file containing the import, imports expand at launch, and recursion is capped at a maximum depth of four hops.

Exam context: The hop cap and the resolution base are both keyed. Imports extend a file you already load; they play no part in discovering ancestor CLAUDE.md files, which the upward walk finds on its own.

See also: 3.1 Claude Code Operation


Repository Initialization (/init)

The built-in command that analyses a codebase and generates a starting CLAUDE.md of build commands, test instructions and conventions.

Exam context: Where a CLAUDE.md already exists it suggests improvements rather than overwriting. Distractors have it silently replacing the file, or generating settings.json, which it does not touch.

See also: 3.1 Claude Code Operation


/context

The built-in command that reports what is consuming the context window, listing loaded instruction files under Memory files.

Exam context: It reports and frees nothing. When a stem asks how to confirm which files a session actually loaded, this is the mechanism; when it asks how to free space, the answer is /compact.

See also: 3.1 Claude Code Operation


Auto Memory (Agent Memory)

The notes Claude keeps for itself at ~/.claude/projects/<project>/memory/. A MEMORY.md index loads at the start of every conversation, capped at its first 200 lines or 25KB, with topic files read on demand. On by default, per repository, shared across worktrees, machine-local.

Exam context: CLAUDE.md is what you write for Claude; auto memory is what Claude writes for itself. Machine-local is the tested property: a clean clone starts with none of it. autoMemoryEnabled: false in a project's settings switches it off for that repository; the /memory toggle, which writes your user settings, and CLAUDE_CODE_DISABLE_AUTO_MEMORY=1 switch it off across all your projects.

See also: 3.1 Claude Code Operation


Rules

Standing constraints as markdown files under .claude/rules/ (project) and ~/.claude/rules/ (user). A project rule with no paths field loads at launch with the same priority as .claude/CLAUDE.md, and paths frontmatter scopes a rule to matching files instead. User rules load before project rules, but neither set overrides the other: where they conflict, Claude may follow either.

Exam context: The guide's Rules component spans two mechanisms of unequal force: these instruction files, which are context, and the permissions rules in settings.json, which the client enforces.

See also: 3.1 Claude Code Operation


Skill

A packaged procedure: a directory holding a SKILL.md with YAML frontmatter and markdown instructions, personal in ~/.claude/skills/<name>/ or project in .claude/skills/<name>/, plus managed settings and plugins. Claude invokes one when its description matches the task, or you type /skill-name.

Exam context: The body loads only when used, so a long procedure costs nothing until invoked. Name collisions across scopes resolve enterprise over personal over project, the inverse of settings precedence, which is exactly what the distractors exploit. skillOverrides in settings (September 2026) changes a skill's visibility without editing it: user-invocable-only hides it from Claude but keeps /name, name-only drops its description, off hides it everywhere.

See also: 3.1 Claude Code Operation


Custom Command

A project- or user-defined invocable. A file at .claude/commands/<name>.md creates /name, and custom commands have merged into skills: a skill at .claude/skills/<name>/SKILL.md creates the same /name with more capability.

Exam context: Existing command files keep working, and the skill wins a name clash. Arguments arrive through $ARGUMENTS, with $0 and $1 indexing individual positions.

See also: 3.1 Claude Code Operation


Subagent Definition

A markdown file in .claude/agents/ (project) or ~/.claude/agents/ (user) with name and description required in frontmatter and tools, model and memory optional. The body is the subagent's system prompt.

Exam context: Each runs in its own context window and only its final result returns to the main conversation, which is why the definition has to be self-contained. Name clashes follow the settings direction (September 2026): managed, then --agents JSON, then .claude/agents/, then ~/.claude/agents/, then plugins. A definition's model outranks CLAUDE_CODE_SUBAGENT_MODEL unless CLAUDE_CODE_SUBAGENT_MODEL_FORCE=1 is also set. Its permissionMode is ignored while the main session is in acceptEdits, auto or bypassPermissions, so a subagent that must never edit needs its editing tools left out of tools.

See also: 3.1 Claude Code Operation


settings.json

Claude Code's configuration file: permissions, hooks wiring, env, model selection and operational toggles. .claude/settings.json is the checked-in team baseline.

Exam context: Configuration, not prose. A stem describing instructions or conventions is pointing at CLAUDE.md; a stem describing what Claude may and may not do is pointing here. It also carries outputStyle, statusLine, sandbox, and extraKnownMarketplaces with enabledPlugins for sharing plugins. A cloned repository cannot grant itself capability (September 2026): its permissions.allow rules, additionalDirectories and .mcp.json approvals such as enabledMcpjsonServers wait for someone to accept the workspace trust dialog, while deny and ask rules apply regardless.

See also: 3.1 Claude Code Operation


settings.local.json

Personal per-project configuration at .claude/settings.local.json, auto-gitignored: Claude Code adds **/.claude/settings.local.json to your global git excludes file.

Exam context: It outranks the checked-in project file, which is the whole point of it. Gitignored means excluded from version control, not from loading, and the distractor that says otherwise turns up in every second settings item.

See also: 3.1 Claude Code Operation


Settings Precedence

The chain, highest to lowest: managed settings, command line arguments, .claude/settings.local.json, .claude/settings.json, ~/.claude/settings.json.

Exam context: Local beats project beats user for a single value such as model. Being checked in confers no rank, and user settings sit at the bottom rather than the top however personal the preference feels. List settings such as permissions.allow merge across files instead (September 2026), so a local file can add a rule but never remove a shared one. Want a prompt back for a command the team allows? Add an ask rule, because rules are checked deny, then ask, then allow.

See also: 3.1 Claude Code Operation


permissions.deny Rule

A settings entry naming a tool and pattern that Claude Code refuses to run, such as Bash(git push *) or Read(./.env).

Exam context: Enforced by the client whatever the model decides, and binding in every permission mode including bypassPermissions. When a stem says a file or command must never be touched, this is the keyed answer and a CLAUDE.md sentence is the distractor.

See also: 3.1 Claude Code Operation


Permission Mode

The axis controlling how much Claude Code does without asking: default (labelled Manual, alias manual), acceptEdits, plan, auto, dontAsk and bypassPermissions. Shift+Tab cycles modes mid-session; permissions.defaultMode sets the starting point. In .claude/settings.json or .claude/settings.local.json (September 2026), an auto value does not take effect and the built-in default applies. Nor does bypassPermissions, which starts the session in Manual. From v2.1.283 the built-in default for interactive terminal and VS Code sessions is auto on every plan and provider; claude -p starts in Manual.

Exam context: The guide's auto-mode feature, and the config values are exact. Choose by isolation and reversibility, not by how much waiting the engineer will tolerate.

See also: 3.1 Claude Code Operation


acceptEdits

The mode that auto-approves file edits and the common filesystem commands mkdir, touch, rm, rmdir, mv, cp and sed inside the working directory (September 2026).

Exam context: The right answer for iterating on code you will read in a diff afterwards. It approves edits, not arbitrary shell commands, which is the line distractors blur.

See also: 3.1 Claude Code Operation


plan

The mode in which Claude reads and explores while edits stay blocked until you approve the plan. Approving switches the session into an editing mode.

Exam context: Keyed by unfamiliar code and by a stem wanting a proposal before any change lands. It gates everything in the repository, so it is the wrong tool for protecting one specific path.

See also: 3.1 Claude Code Operation


dontAsk

The mode that auto-denies anything that would have prompted, running only pre-approved tools and the read-only command set.

Exam context: The CI answer: a session that must never wait for input and must never quietly widen its own reach. It needs an explicit allow list to get anything done, which is what makes it auditable. Where an unattended run's commands cannot be listed in advance, --permission-mode auto has the classifier vet each one instead.

See also: 3.1 Claude Code Operation


bypassPermissions

The mode that runs everything without checks, documented for isolated containers and VMs only. --dangerously-skip-permissions is its flag form.

Exam context: Two rules survive it: deny rules still block, and allow rules stop mattering entirely. A resume never brings it back, and a bypassPermissions value in .claude/settings.json or .claude/settings.local.json does not take effect (September 2026). Set it at launch, or in user, --settings or managed settings.

See also: 3.1 Claude Code Operation


Session Transcript

The JSONL file at ~/.claude/projects/<project>/<session-id>.jsonl that Claude Code writes continuously as a conversation runs.

Exam context: Sessions persist whatever you do, so "the conversation is gone" is never the keyed answer. Re-entry is claude --continue for the most recent session in the directory, claude --resume for the picker or a named ID, and /resume from inside a session. As of September 2026 only a terminal resume by --continue, ID or unique name restores the permission mode, and not for bypassPermissions or plan, among a few narrower cases. The picker and /resume leave the stored mode behind, a claude -p resume starts where a new -p run would, and launch flags such as --add-dir and --mcp-config must be passed again. /branch, or --fork-session on a resume, copies the conversation into a new session and leaves the original intact.

See also: 3.1 Claude Code Operation


/clear

The in-session command that starts a conversation with empty context, for work unrelated to what came before.

Exam context: The old conversation stays on disk and reopens through /resume. Reaching for it mid-task to free space is the anti-pattern the exam dramatises, because the session then knows nothing about the task it is still working on.

See also: 3.1 Claude Code Operation


/compact

The in-session command that replaces the conversation history with a summary, optionally focused by instructions you pass it.

Exam context: The move when the same task continues and the window is filling. Compaction keeps the thread; clearing drops it. Distractors offer /context as a third option, but reporting usage frees nothing.

See also: 3.1 Claude Code Operation


Headless Mode (claude -p)

Non-interactive Claude Code: prompt in, result out, no human at the terminal. Piped stdin is capped at 10MB, and the exit code is 0 on success so scripts can branch.

Exam context: A -p run starts in Manual on every plan, so scripted work states its own autonomy with --permission-mode and --allowedTools. Its sessions stay out of the interactive picker and a plain claude --continue but still resume by ID, and claude -p --continue includes them. The claim that Claude Code needs a terminal is a distractor, not a fact. It never shows the workspace trust dialog (September 2026), so in a folder nobody has trusted it ignores project permissions.allow rules yet still runs settings-file hooks and connects .mcp.json servers, unless --bare or --setting-sources user keeps them out.

See also: 3.1 Claude Code Operation


stream-json

The output format emitting newline-delimited JSON events as a run progresses, carrying a system/init event of session metadata and ending with a result message.

Exam context: Token deltas need this format plus --verbose and --include-partial-messages. Its siblings are text, the default, and json, the single payload carrying result, session_id, cost and usage. Invented flags such as --stream are the standing distractor. Subagent messages carry parent_tool_use_id, with null for the main conversation; --forward-subagent-text adds each subagent's text and thinking to its tool calls (September 2026).

See also: 3.1 Claude Code Operation


--bare

The flag that skips auto-discovery of hooks, skills, custom commands, subagents, installed plugins, MCP servers, auto memory and CLAUDE.md, so a bare run gets what it needs by flag, such as --agents or --mcp-config.

Exam context: Dated current state, September 2026: the docs recommend it for scripted and SDK calls and expect it to become the default for -p. The reasoning to carry into an item is reproducibility, since nothing in a developer's home directory can then change what a pipeline runs.

See also: 3.1 Claude Code Operation