03 — The Interaction Surface — Context, Tools, Modes, and Keys
"Just typing prompts" was how I described driving a Claude Code session, which made the keyboard shortcuts a memorization exercise. The frame that fixed that: the agentic loop is fixed; everything I control is either the input the loop perceives or the leash it runs on. [1] Inputs are context and tools; the leash is permission modes. Once I saw those three axes, the keyboard shortcuts stopped being a memorization exercise and became obvious handles on them.
The framing that clicked is to stop thinking of a session as a chat and start thinking of it as a loop I'm continuously tuning. Every prompt I type, every file I @-mention, every /compact I run is me shaping what the model perceives next. Every Shift+Tab, every Ctrl+C, every Esc+Esc is me shaping how much rope the loop has. The model and the loop itself never change session to session — my tuning of those two axes is the entire job [1][3].
Context: the workspace the loop perceives
The first axis is context — the total information the model holds in active memory at once: the conversation history, every file it has read, and the results of every terminal command it has run [2]. It's a temporary workspace measured in tokens, and it fills up. As it fills, the model can start to "forget" early details or lose accuracy — what the roadmap calls context rot. Managing it (through /compact, /clear, and fresh sessions) is what keeps responses sharp and costs predictable.
The way of thinking I use: context is a whiteboard, not a database. It's not persistent storage; it's working memory for the current task. When I want things to actually persist across sessions, that's a different mechanism entirely (the CLAUDE.md memory file, covered in its own post). The whiteboard gets wiped on /clear and summarized on /compact.
Tools: the hands the loop can use
The second axis is tools — the functions that let the model act rather than just generate text [3]. They split into client-side and server-side:
- Client-side tools touch my local environment: Bash runs terminal commands, Read and Edit manipulate files, Glob and Grep search the codebase.
- Server-side tools reach outward: WebSearch fetches real-time information from the internet.
MCP servers and plugins (covered in their own posts) extend this set — they add new tools the loop can call. The thing I had to internalize is that every tool the loop can reach is also a risk surface. A loop with Bash and no approval prompts can run anything I could run. That's why tools and permission modes are separate axes: tools say what's _possible_, permissions say what's _allowed right now_.
Permission modes: the leash
The third axis — the leash — is permission modes, the settings that control how much autonomy the loop has [4]. Default mode asks for my approval before any file edit or shell command. Accept-Edits lets the agent modify files automatically while still prompting for terminal commands. Plan mode restricts it to read-only tools so it can research and outline a strategy without touching anything. And Bypass-Permissions (often called "YOLO mode") removes all approval prompts for use in secure, isolated environments.
The roadmap is explicit that these are a dial, not a toggle, and the dial is the entire safety model [4]. I cycle them with Shift+Tab, and the mode I'm in decides how many destructive actions can happen between my checks. Plan mode for exploration, Default for real edits, Accept-Edits only for repetitive mechanical work where I trust the pattern, Bypass never on a machine I care about.
The keys that steer the loop
With those three axes in hand, the keyboard shortcuts are just handles. I stopped memorizing them as a list and started reading them as operations on context, tools, or the leash:
- Ctrl+C — the kill switch. Sends an interrupt to stop the current activity immediately: a runaway loop, a search taking too long, a response going the wrong way [5]. It's how I yank the leash.
- Ctrl+R — reverse search through command history. Finds and reuses previous prompts or commands by typing a few letters [6]. It's context recovery.
- Esc — exits menus, cancels active inputs, clears the command line [7]. A light reset of interface state without touching the underlying process.
- Esc + Esc — the Rewind feature, the one that took longest to click. Double-tap opens a temporal menu: jump back to any previous prompt, restoring the conversation, the code, or both [8]. Before every change Claude snapshots affected files, so I can discard an entire failed branch of reasoning without manual git surgery.
- Shift+Tab — cycles permission modes on the fly [9]. The leash dial, under my fingers mid-session.
The keys I reach for most are Ctrl+C (stop a drift), Esc+Esc (rewind a bad turn), and Shift+Tab (tighten or loosen the leash before a risky step). Everything else is occasional.
MCP and plugins: growing the tool menu
Two extension mechanisms sit on the tools axis and deserve a flag here (full posts follow). MCP — the Model Context Protocol — is the open standard that connects Claude to external tools, databases, and services, turning it from a local file editor into a connected agent [10]. Plugins bundle multiple customizations (slash commands, agents, skills, hooks, MCP servers) into one installable unit [11]. Both grow the tool axis; neither changes the loop. The discipline is the same as with built-in tools: every new tool is new capability _and_ new risk surface.
How I use this
The habit these notes left me with is a pre-flight check shaped exactly around the three axes. Before a session, I ask: is the context clean for this task (or do I need /clear)? Are the right tools available (and are the wrong ones — like an MCP server I don't need — adding noise)? Is the permission mode set to how much rope this task actually warrants? A session that drifts is almost always one where I let one of those three slip — context rotting, a tool I forgot was enabled, a leash left too loose. Tuning the three axes is the whole job; the loop does the rest.
References
[1] Anthropic, "Best Practices for Claude Code," Claude Code Docs, 2025. [Online]. Available: https://code.claude.com/docs/en/best-practices
[2] Anthropic, "The context window," Claude Code Docs, 2025. [Online]. Available: https://code.claude.com/docs/en/how-claude-code-works#the-context-window
[3] Anthropic, "Tools," Claude Code Docs, 2025. [Online]. Available: https://code.claude.com/docs/en/how-claude-code-works#tools
[4] Anthropic, "Permission modes," Claude Code Docs, 2025. [Online]. Available: https://code.claude.com/docs/en/permissions#permission-modes
[5] Anthropic, "Interactive mode," Claude Code Docs, 2025. [Online]. Available: https://code.claude.com/docs/en/interactive-mode
[6] Anthropic, "Reverse search with Ctrl+R," Claude Code Docs, 2025. [Online]. Available: https://code.claude.com/docs/en/interactive-mode#reverse-search-with-ctrl+r
[7] Anthropic, "Interactive mode — Esc," Claude Code Docs, 2025. [Online]. Available: https://code.claude.com/docs/en/interactive-mode
[8] Anthropic, "Checkpointing," Claude Code Docs, 2025. [Online]. Available: https://code.claude.com/docs/en/checkpointing
[9] Anthropic, "Configure permissions," Claude Code Docs, 2025. [Online]. Available: https://code.claude.com/docs/en/permissions
[10] Anthropic, "Connect Claude Code to tools via MCP," Claude Code Docs, 2025. [Online]. Available: https://code.claude.com/docs/en/mcp
[11] Anthropic, "Discover and install prebuilt plugins through marketplaces," Claude Code Docs, 2025. [Online]. Available: https://code.claude.com/docs/en/discover-plugins
Knowledge check · Question 1 of 5
The three axes you control around the fixed agentic loop are…
Comments
Leave a Comment
You must be signed in to comment
0 Comments
No comments yet. Be the first to comment!