Coding agents
Claude Code
Claude Code is Anthropic's terminal coding agent: it reads and edits files, runs shell commands, and puts every sensitive action behind an approval step.
Claude Code is Anthropic’s terminal coding agent. In a project directory it reads the repository, edits files, runs shell commands and reports what it did. The terminal CLI, VS Code, JetBrains, the desktop app and the web surface share that engine.
We run it as a second coding agent next to Codex, mainly for its strict default permission model.
Install and first run
- The native installer is recommended:
curl -fsSL https://claude.ai/install.sh | bashon macOS, Linux and WSL, or the PowerShell and CMD scripts on Windows, where Git for Windows enables the Bash tool. - Homebrew, WinGet, apt, dnf and apk also work; native installs self-update.
- Start with
cd your-projectthenclaude; the first run opens a browser login. WithANTHROPIC_API_KEYset it asks you to approve the key instead.
Permission model
The starting mode decides what runs without asking:
default, labelled Manual: reads only; file writes, shell commands and network requests wait for approval.acceptEdits: file edits and a fixed set of filesystem commands (mkdir,mv,cp) run automatically.plan: analysis without writes; edits stay blocked until you approve the plan.auto: a separate classifier model judges actions in place of you.dontAsk: pre-approved tools run, anything that would prompt is denied; built for CI.bypassPermissions: everything runs, only inside an isolated container or VM.
Rules are evaluated deny, then ask, then allow; the first match wins regardless of specificity. A deny on a bare tool name removes it from the model context; a scoped rule like Bash(rm *) blocks only the matching call. No mode auto-approves an explicit ask rule or an rm on a critical path, and deny rules still apply in bypassPermissions.
Context and memory
Every session starts with a fresh context window; two mechanisms carry knowledge across sessions:
- CLAUDE.md: files you write, loaded at the start of every session at managed, user (
~/.claude/CLAUDE.md), project (./CLAUDE.md) and local (CLAUDE.local.md, kept out of Git) scope. - Auto memory: notes Claude writes itself from your corrections; the first 200 lines or 25KB load into every session.
@pathimports expand at launch, up to four hops; imports outside the working directory need first-time approval./initgenerates a starting file; the docs suggest staying under 200 lines.
CLAUDE.md is context, not enforced configuration. Anything that has to run at a fixed point belongs in a hook.
Subagents, hooks and MCP
- Subagents: each gets its own context window, system prompt, tools and permissions; built-ins cover Explore (read-only), Plan and general-purpose.
- Hooks: shell commands, HTTP endpoints and MCP tool calls at lifecycle events such as
PreToolUse,PostToolUseandStop;PreToolUsecan block a call. - MCP: servers are added with
claude mcp addover remote MCP HTTP or SSE, or a local stdio process;.mcp.jsonholds the project list.
Documented limitations
- Context and resources: answers degrade in long sessions and large repositories raise CPU and memory use; the documented mitigations are
/compact, moving large outputs into a subagent and--safe-mode. - Trust: verification is off in non-interactive
-pmode, and a home-directory session keeps the decision for that run only. - Prompt injection: an MCP server that pulls in external content is a risk surface; verify a server before connecting it.
- Platform: a network UNC path cannot be a working directory on Windows, and WSL search over the Windows filesystem is slower.
We use Claude Code at CyberElectro for longer, multi-file refactors with versioned permission rules.
Further reading
- Overview - surfaces, install.
- Memory - CLAUDE.md and auto memory.
- Permissions - allow, ask and deny rules.