Building and Scaling an AI Coding Agent Through Rapid Iteration and User Feedback

anthropic · Tech · 2025 · source Agentic: yes · promotional bias: med · source-backed · extracted with prompt 0.5.5 (schema v2)

Generated from extraction.json — do not edit by hand. Every claim cites verbatim source evidence; stated means the quote directly asserts the claim, implied means it supports it indirectly.

Problem

Domain: AI coding agents

Anthropic needed Claude Code to handle complex, multi-step software engineering work while remaining simple to start, deeply customizable across heterogeneous developer environments, and fast enough to evolve with model capabilities and user feedback.

Constraints:

Architecture

Claude Code is a terminal-first coding agent built around a simple CLI surface, broad access to existing command-line tools, and extensibility primitives such as hooks, custom slash commands, sub-agents, plan mode, to-do lists, and layered Claude.md memory files. Anthropic operates it through rapid internal dogfooding: engineers prototype features, ship them to roughly hundreds to a thousand internal employees, read negative feedback, iterate two or three times, and fast-track features that users love. Evaluation combines end-to-end SWE-bench-style harness tests, triggering evals for tool-use decisions such as web search, and continuous user feedback from internal Slack, GitHub issues, enterprise adopters, designers, PMs, and developers.

Diagram confidence: reconstructed (reconstructed from prose).

flowchart LR
  user[User] --> terminal-cli[Terminal CLI]
  terminal-cli --> coding-agent[Coding agent]
  coding-agent --> developer-tools[Developer tools]
  coding-agent --> claude-md-memory[Claude.md memory]
  coding-agent --> to-do-list[To-do list]
  coding-agent --> plan-mode[Plan mode]
  coding-agent --> hooks[Hooks]
  hooks --> external-notifications[External notifications]
  coding-agent --> sub-agents[Sub-agents]
  product-engineers[Product engineers] --> dogfood-community[Dogfood community]
  dogfood-community --> feedback-channels[Feedback channels]
  feedback-channels --> product-engineers
  product-engineers --> evaluation-suites[Evaluation suites]
  evaluation-suites --> coding-agent
  coding-agent --> claude-code-sdk[Claude Code SDK]
  claude-code-sdk --> external-agent-builders[External agent builders]
Drag to pan · scroll or use +/− to zoom · reconstructed from the source's described component topology

Components

Component Role Interacts with
Terminal CLI Minimal primary user interface that exposes Claude Code to the developer's existing command-line environment. Coding agent, Developer tools, User
Coding agent LLM-driven agent that plans, edits, runs tools, responds to feedback, and performs software-engineering tasks. Terminal CLI, Developer tools, Claude.md memory, To-do list, Plan mode, Hooks, Sub-agents
Developer tools Existing CLIs and project tooling available through the terminal, such as GitHub CLI or observability CLIs. Terminal CLI, Coding agent
Claude.md memory Repo, project, and personal memory files that provide codebase onboarding, architecture notes, gotchas, testing preferences, and user style. Coding agent
To-do list Persistent task-tracking mechanism that keeps long refactors and multi-step tasks from stopping early. Coding agent, User
Plan mode Explicit user shortcut that asks the agent to explain a plan before writing code. Coding agent, User
Hooks Customization mechanism for notifications and integrations, such as Slack or text messages when Claude Code waits for input. Coding agent, External notifications
Sub-agents Extensibility primitive for decomposing work into specialized agent behaviors. Coding agent
Dogfood community Internal Anthropic users who try prototypes and produce high-volume, fast feedback. Feedback channels, Product engineers
Feedback channels Slack feedback, GitHub issues, enterprise adopter feedback, and user critiques used to prioritize work. Dogfood community, Product engineers, Evaluation suites
Product engineers End-to-end owners who prototype, ship to dogfooding, iterate, and release features. Dogfood community, Feedback channels, Evaluation suites
Evaluation suites End-to-end and triggering evals such as SWE-bench harness tests and web-search trigger tests. Coding agent, Product engineers, Feedback channels
Claude Code SDK SDK the team wants to become a general way to build coding and non-coding agents. Coding agent, External agent builders
External notifications Optional user-configured channels such as Slack or text notifications. Hooks, User
User Developer, PM, designer, data scientist, or other operator giving tasks, feedback, and review. Terminal CLI, To-do list, Plan mode, External notifications
External agent builders Companies building coding and non-coding agents on the Claude Code SDK. Claude Code SDK

Data flow

A user starts Claude Code in a terminal and gives a coding or product task. The agent receives repository and personal context from Claude.md, can call existing CLI tools, can use custom slash commands, hooks, and sub-agents, and may create a to-do list or plan before editing. New features are prototyped by product engineers, dogfooded internally, and evaluated by user reaction, issue volume, and formal evals. Feedback from Slack, GitHub issues, early enterprise adopters, and internal users feeds back into feature prioritization, where strong convergence pushes features through two or three internal iterations and then into public release.

3 supporting quotes
“The beauty of the terminal is that it can through the terminal cloud code can access almost everything a developer can and this is what makes the onboarding so smooth to the tool.”transcript, stated
“CloudMD is the equivalent of memory for cloud code. Every time you start a cloud code instance, the cloud MD is included in it.”transcript, stated
“A lot of our best features was like an engineer prototyping an idea, shipping it to dog fooding, and we just hear what the feedback is.”transcript, stated

Why this architecture

Anthropic chose a terminal-first, extensible architecture because the terminal gives an agent immediate access to nearly everything a developer can do, while the sparse interface forces disciplined feature selection. Extensibility through hooks, commands, memory, and sub-agents lets power users adapt the same simple core to heterogeneous environments. The operating model mirrors the product: prototypes beat long docs, internal dogfooding exposes whether users understand or love a feature, and evals plus user feedback catch regressions that benchmark numbers alone cannot explain.

4 supporting quotes
“If you're used to calling like the GitHub CLI or the data dog CLI or literally any CLI tool, you immediately know that cloud code can do it.”transcript, stated
“the app form factor is very light and so it means that you don't get overwhelmed when you first start, but it also mean but because we've built it to be very extensible.”transcript, stated
“Quad code makes it so easy to make prototypes that if you're thinking about hey should we build this feature I I would actually ask hey is there a way like for quad code to prototype that feature”transcript, stated
“If you see a change in the Sweet Bench score, it's not always obvious what caused the change, and you actually have to read through these pretty gnarly transcripts.”transcript, stated

Models used: Claude · Claude Code · Claude Code SDK

Scale

Alternatives considered (roads not taken)

A richer GUI-first onboarding surface

Rejected because: The team preferred the terminal's immediate access to developer tools and a minimalist interface that avoids overwhelming users.

“The terminal is also a very minimalist form factor. So unlike a web app, you can only use ASI. So you can only fit as many characters are available on the screen.”transcript, stated

Formal PRDs for every feature

Rejected because: For smaller features, the hard part was discovering the form factor and prompt behavior through prototypes rather than solving an integration spec.

“for smaller features such as a to-do list or plan mode, these are ideas that we've talked about internally. And they didn't require PRD because the hard thing is actually to figure out the right form factor.”transcript, stated

Teaching users to request planning only in natural language

Rejected because: After one or two months of requests, users still wanted an explicit plan-mode shortcut.

“Over the course of one or two months, enough users said that they just wanted to be really explicit, that they wanted a shortcut to it that we caved”transcript, stated

Always trigger web search for questions

Rejected because: The team wants web search to trigger only when freshness or external information is needed.

“we want to make sure that web search isn't overly eager. Like if you ask it a question, you don't want it to like search the web 100% of the time.”transcript, stated

Multi-page documentation before prototypes

Rejected because: Claude Code makes it cheap to demo and feel the feature before writing a long specification.

“is there a way like for quad code to prototype that feature for you so that you can get a feel for how useful it is before writing a multi-page doc on it.”transcript, stated

Patterns

tool-use-orchestration (agent-runtime)

Claude Code operates through the terminal, letting the agent use existing developer CLIs and project tools instead of requiring each integration to be reimplemented.

“If you're used to calling like the GitHub CLI or the data dog CLI or literally any CLI tool, you immediately know that cloud code can do it.”transcript, stated

agent-memory (context)

Claude.md files provide repo, project, personal, and global context that is included when a Claude Code instance starts.

“CloudMD is the equivalent of memory for cloud code. Every time you start a cloud code instance, the cloud MD is included in it.”transcript, stated
“you can have uh a quad MD for the entire repo and then you can also have your fully individual cloud MD”transcript, stated

multi-agent-orchestration (agent-architecture)

Sub-agents are one of the customization primitives used to adapt Claude Code to different developer environments and workflows.

“that's why we have things like hooks and custom slash commands and sub aents and stuff like that.”transcript, stated

eval-driven-development (quality)

The team uses SWE-bench-style end-to-end evals for harness/model changes and triggering evals for tool-use decisions such as web search.

“there's two kinds of evals that we care about and they're both imperfect and we're both we're trying to get better at both. So the first is endtoend evals.”transcript, stated
“Um, the other kind of eval that we think is really important to make is triggering evals.”transcript, stated

human-in-the-loop-gate (workflow)

Plan mode and persistent to-do lists give users checkpoints to review intent, progress, and task scope before or during code changes.

“people kept saying, "Hey, just like tell me what you're going to do, but don't write code yet."”transcript, stated
“The feature evolved through multiple iterations—initially tasks would fly past the screen in the transcript, then the team made to-do lists persistent and accessible via a /todo command so users could check progress at any point without scrolling.”summary, stated

data-quality-loop (feedback)

Internal dogfooding, negative feedback, GitHub issues, and enterprise feedback drive which features are iterated, shipped, or dropped.

“We love negative feedback. Like we don't want platitudes. We want to hear what doesn't work.”transcript, stated

Tradeoffs

Primary product surface

Chose minimal terminal-first CLI over a heavier web-app-style interface with explicit buttons and onboarding.

Rationale: The terminal gives broad tool access and keeps the interface simple, but it forces brutal prioritization of what appears on screen.

“You don't have the option to add any buttons. And as a result, we've been very um pragmatic and very almost like brutal about what features we decide to showcase”transcript, stated

Feature-development process

Chose engineer prototypes plus dogfooding over spec-heavy product planning for every feature.

Rationale: For small agent-product features, the decisive question is whether users understand, trust, and love the behavior, which prototypes reveal faster than docs.

“And for the features that people love, that that's a really strong signal that we should fast track it to um sharing it with the public.”transcript, stated

Planning interface

Chose explicit plan mode over only natural-language requests like 'tell me what you will do first'.

Rationale: Although the team wanted users to ask naturally, enough users wanted a clear shortcut that the team added one.

“we wanted to teach users to express what they wanted in natural language. And when you do express in natural language, COD will make a plan for you even outside of plan mode.”transcript, stated
“enough users said that they just wanted to be really explicit, that they wanted a shortcut to it that we caved”transcript, stated

Customization mechanism

Chose hooks and user-configured integrations over only built-in notification surfaces.

Rationale: Users wanted notifications when long-running agent work needed them, and hooks let each environment choose Slack, text, or other integrations.

“A lot of people wanted to get Slack notifications when Quad Code was waiting on their response.”transcript, stated
“if you wanted to get a text message every time Quad Code was waiting on you, you could configure a hook for that.”transcript, stated

Roadmap horizon

Chose few-month planning around next-generation model capabilities over a fixed one-to-two-year product vision.

Rationale: Model capabilities change quickly enough that the team does not trust long-range feature prediction.

“A year or two is a really long time. I can talk about the next few months.”transcript, stated
“because the models are changing so quickly, we think that it's really hard to predict more than 6 months in the future.”transcript, stated

Gotchas (what bit them)

End-to-end coding evals do not explain themselves.

Root cause: When SWE-bench scores move, the benchmark does not say which harness behavior changed or why.

Resolution: Read transcripts for themes and pair end-to-end evals with more targeted triggering evals where possible.

“if you for example see a change in the SWEBench score, it's not always obvious what caused the change and you actually have to read through these pretty gnarly transcripts”transcript, stated

Agents may create planning overhead for trivial tasks.

Root cause: The to-do-list trigger can fire even when there is only one task to track.

Resolution: Add triggering evals with trajectories where to-do lists should not be used or should contain an appropriate number of items.

“sometimes cloud code would want to write a to-do list for one item and then check it off.”transcript, stated
“you can take the trajectory where the agent um create a to-do list for one task, put it into your eval suite”transcript, stated

Models are too eager to code even when users want planning.

Root cause: Current models often push toward implementation after presenting a plan.

Resolution: Expose explicit plan mode for now, while hoping future models follow planning-vs-execution directions better.

“I mean it's just like the models these days are just too eager to code.”transcript, stated
“when the model is better at following these kinds of user directions, we might we might remove it.”transcript, stated

Terminal-first power limits accessibility for non-technical users.

Root cause: The terminal interface is hard to explain to users who have never used it before.

Resolution: Keep professional developers as the core market while exploring form factors for data science, PM, design, marketing, and sales.

“Right now, it's still really hard to explain a terminal interface to folks who haven't used it before, but I think the core primitives are very general.”transcript, stated

Capability failures are hard to diagnose.

Root cause: A model failure might be caused by wrong context, wrong model choice, or a fundamental capability gap.

Resolution: Build product intuition by pushing models and judging whether a capability is 80% present or only 10% present.

“you have to know if the model fails, is it because the context was wrong? Is it because you're not you're using maybe the wrong model for the task or is the model at the core un not capable of it?”transcript, stated

Evaluation

Claude Code evaluation combines imperfect end-to-end harness evals such as SWE-bench, triggering evals for tool-use decisions such as web search or to-do-list creation, and continuous feedback from internal users, GitHub issues, enterprise adopters, and product critique.

Metrics: SWE-bench score changes · tool-triggering correctness · web search trigger rate · to-do list trigger appropriateness · GitHub issue votes · internal feedback frequency · enterprise customer requests

3 supporting quotes
“you can think of this as running sweet bench on new quadcode harnesses to make sure that we're not degrading performance.”transcript, stated
“there's a lot of situations where cloud code can decide whether or not to use a tool. And ideally, cloud code can make these decisions without the human.”transcript, stated
“your users are just keeping you honest about what is working and what is not working.”transcript, stated

Outcomes

The case describes roughly hundreds to a thousand internal dogfood users, feedback about every 10 minutes, and prioritized fixes often within one to two weeks.

3 supporting quotes
“So, it had a very high viral factor internally before we launched it. Okay. So, you know, when I first started playing with Clockode, I installed in the terminal and then I was like, what is is this it?”transcript, stated
“then it crossed over into research and then it actually started to cross over into tech adjacent roles like data science and product management and product design.”transcript, stated
“We want to make sure these companies are incredibly successful and and will tell their stories as their products come to market.”transcript, implied