Transcript for Cursor Team: Future of Programming with AI | Lex Fridman Podcast #447
Lex Fridman ยท article ยท 2024-10-06 source โ Reader ๐ฅ๏ธ
Agentic AICoding AgentsContext EngineeringEvalsFormal MethodsAgencyInference OptimizationKnowledge Distillation (Teacher-Student Compression)Moats & DefensibilityPull Requests & Async Code ReviewVerifiability (as the Quality Bar)
AI coding tools should be built to maximize the human programmer's speed, control and agency over their code โ not to replace programming with natural-language delegation to an autonomous agent โ because the hardest and most valuable part of engineering is the dense sequence of small judgment calls that specifying intent upfront cannot capture, and because verifying AI-generated code is at least as hard a problem as generating it.
practical ยท mixed โ A long-form conversational interview (Lex Fridman with Cursor founders Michael Truell, Sualeh Asif, Arvid Lundmark, Aman Sanger) that mixes theoretical exposition (how transformers, caching, RL and scaling laws work) with practical argument for a specific design philosophy: AI-assisted coding should keep the human in the driver's seat, maximizing speed and control rather than delegating programming to an autonomous chatbot-style agent.
Structure
| Part | Role |
|---|---|
| Origin story: Copilot, scaling laws, and the decision to fork VS Code into a new editor | context |
| Cursor Tab: predicting the programmer's next edit, not just the next tokens, driven by the idea of eliminating 'zero-entropy' keystrokes | evidence |
| Diff and code-review UX: redesigning review around the reviewer rather than the (now non-human) author | evidence |
| ML/infrastructure internals: Apply model, speculative edits, KV-cache tricks, MoE/MQA/GQA/MLA, Preempt context-rendering system, embedding-index scaling | evidence |
| Agents, Shadow Workspace, dangerous-code comments, bug-finding, and formal verification | evidence |
| Scaling laws, test-time compute, synthetic data, and the economics of training vs. inference | context |
| Closing manifesto: 'the programmer in the driver's seat' vs. the chatbot/engineering-department framing | conclusion |
Key terms
- Zero-entropy edits
Once a programmer's intent is fully determined, the remaining keystrokes needed to express it carry no new information ('zero entropy') โ the editor should 'tab' the programmer through them instead of requiring them to be typed. - Cursor Tab
An autocomplete successor that predicts not just the next tokens but the next whole diff and the next place to jump to in the code, collapsing many small edits into repeated Tab presses. - Apply (model)
A separate, custom-trained model whose only job is to take a frontier model's rough sketch of a code change and merge it precisely into the actual file โ because frontier models are good at proposing changes but unreliable (per speakers, 'fails at least 40% of the time' with naive deterministic matching) at mechanically applying them, e.g. miscounting line numbers in large files. - Speculative edits
A variant of speculative decoding for code editing: feed chunks of the existing code back into the model as a 'draft', let the model agree (regenerate) most of it in parallel, and only slow down to genuinely regenerate at points of actual disagreement with the ground truth. - Shadow Workspace
A hidden, unsaved copy of the user's editor window in which AI agents can make and iterate on changes (getting linter/type-checker feedback) without touching the files the user sees or risking that unreviewed edits land on disk. - Preempt
An internal system for assembling prompts declaratively (styled after React/JSX) โ components declare priority ('this line is most important, subtract one priority per line of distance'), and a renderer fits as much as possible into the available context window, much like a responsive web layout engine fits content to a viewport. - The verification problem
As models propose bigger diffs and across more files, the human cost of reviewing/verifying those diffs grows faster than the cost of generating them โ the central UX and research problem the diff interface and bug-detection work are trying to solve. - The human in the driver's seat
The design commitment that the programmer should retain speed, agency and control over every decision (down to individual micro-decisions in trade-offs), as opposed to handing off specification to an AI 'engineering department' addressed through a chat box.
Propositions
- explicitA code editor is fundamentally a 'souped up word processor' for a structured medium (code), and what counts as a code editor will change substantially over the next decade as AI capability grows.conf: high
- explicitGitHub Copilot was the first mass-market consumer LLM product, and despite being 'just autocomplete,' its tolerable failure mode (wrong suggestions cost only a keystroke to dismiss) made it broadly adopted well before chat-based AI products.conf: high
- explicitBuilding AI coding tools as a VS Code extension/plugin, rather than forking the editor outright, is too limiting once you believe models will keep improving fast โ Cursor forked VS Code specifically to avoid being capped by a host editor's plugin API.conf: high
- explicitIn AI programming tools, being even a few months ahead on model capability translates into disproportionate product advantage, because every model-capability jump unlocks a new wave of features โ unlike past tech waves with one major unlock.conf: high
- explicitCo-locating the people who design the UX/interaction with the people who train the underlying models (sometimes the same person) produces capabilities that are hard to reach when those two functions are organizationally separated.conf: medium
- explicitThe most valuable AI-assisted edits are the ones with 'zero entropy' โ once intent is fully expressed, the remaining characters carry no new information and should be collapsed into a single Tab press rather than typed.conf: highextendsThe Tokens You Can't Wait For ยท p6 โ Cursor's speculative-edits technique (feeding back existing code as a 'draft' for the model to regenerate, slowing only at points of disagreement) is a code-specific precursor to the speculative-decoding-plus-MoE serving stack the later piece describes as now standard practice.
- explicitMaking next-edit prediction fast enough to feel instantaneous required specific architecture choices (a sparse/MoE model, because the task is extremely prefill-token-heavy but generates few tokens) and a code-specific caching strategy, not just a smaller model.conf: high
- explicitThe full generalization of 'Tab' is next-action prediction โ suggesting not just text edits but terminal commands, jumps to definitions, and jumps across files โ effectively predicting the next five minutes of a programmer's likely actions.conf: high
- explicitAs models get smarter and propose bigger changes, the human cost of verifying/reviewing those changes grows correspondingly, so UX work must shift from showing the full diff to actively guiding the reviewer's attention (highlighting likely-bug regions, reordering files by logical dependency) โ this is 'the verification problem.'conf: highextendsPodcast: The AI Joy Gap: Why Some Developers Thrive While Others Struggle ยท p4 โ Both argue existing code-review tooling/workflows are not designed for AI-generated-code volume and need fundamental redesign; this 2024 conversation is an early, concrete articulation (redesign the diff UX around the reviewer, not the author) of the claim the later piece states as a general diagnosis.
- explicitWhen the author of a code change is a language model rather than a person, the review interface no longer needs to serve the author's experience at all โ it can be designed entirely around making the reviewer's job fast, easy and productive, which is a more creative design space than imitating GitHub-style code review.conf: high
- explicitNo single frontier model (GPT, Claude/Sonnet, o1) dominates on every axis that matters for coding (speed, editing ability, long-context handling, raw coding capability); as of this conversation the speakers judge Sonnet the best all-round, with o1 strong specifically at interview-style reasoning problems but worse at inferring loose human intent.conf: high
- explicitPublic coding benchmarks like SWE-Bench are significantly contaminated in frontier models' training data (including the underlying repositories, not just the issues), which undermines their value as an evaluation signal โ human qualitative 'vibe checks' are used internally as a necessary supplement.conf: high
- explicitHumans communicate intent to coding tools in messy, under-specified, context-dependent natural language very differently from how they phrase well-specified interview-style problems, which is a core reason benchmarks diverge from real-world coding usefulness.conf: high
- explicitContext management is a real trade-off, not a solved problem: feeding a model more context makes responses slower and more expensive, and some models actually get more confused with more irrelevant information in the prompt โ so retrieval and relevance-filtering quality matter more than raw context-window size.conf: high
- explicitAgents are not yet broadly useful for most of programming, because much of programming's value comes from fast iteration on an initial attempt rather than from fully specifying a task upfront โ but agents are already well suited to narrow, well-specified tasks (e.g. 'this UI bug doesn't work, fix it') that a human can delegate and verify later.conf: high
- explicitA hidden copy of the editor ('Shadow Workspace') that lets an AI agent make and run unsaved edits and get real linter/type-checker feedback is a necessary piece of infrastructure for any background agent, because without some feedback signal the only way to improve output is to let the model 'think longer,' which has diminishing returns.conf: high
- explicitEven the most capable models of this era (including o1) are poorly calibrated at detecting real bugs when simply prompted to find one, because pre-training data is saturated with code generation and Q&A but comparatively starved of real bug-detection/fix examples.conf: high
- explicitCalibrating how paranoid to be about a given piece of code (is this an experiment where a few bugs are fine, or production code where even an edge case is unacceptable) is itself a form of tacit, culturally-transmitted engineering knowledge that models currently lack even when maximally prompted toward caution.conf: highsupportsWhen AI can do more than we can check ยท p1 โ The Cursor team's 2024 observation that good bug-finding/verification is 'necessary' as AI writes more code is an early instance of the later-corpus thesis that verification cost, not generation cost, is the binding constraint on how much AI output can be trusted.
- explicitAs AI generates more and more of a system, having good bug-finding/verification models becomes necessary, not optional, because without the ability to verify AI-written code at scale, the problems already present in AI-assisted programming 'become untenable.'conf: highextendsPodcast: Formal Methods for Every Engineer in an AI-Powered Future ยท p3 โ Arvid's 2024 speculative vision (model proposes a formal spec, human reviews it, a reasoning model proves the implementation matches) is an early articulation of what the later piece describes as already-practical: asking an AI to generate a Quint/TLA+ spec as the fastest on-ramp to formal methods.
- explicitWriting an explicit 'DANGEROUS' comment on risky lines of code is a genuinely useful practice (contested aesthetically by one of the four speakers) precisely because both humans and current AI models pay more attention to flagged regions than to equally risky but unflagged code.conf: high
- explicitA future where formal verification (a model proposes a spec, a human reviews it, a reasoning model proves the implementation matches it) replaces unit testing for most functions is desirable and plausible โ but the hardest open question is whether intent that is 'really hard to specify' in natural language is equally hard to specify formally, which would limit how far formal verification alone could go.conf: medium
- explicitIt is easier to train a model to introduce bugs into existing code than to train one to find bugs, so synthetic data generated by a 'forward' bug-introduction model can be used to train a 'reverse' bug-detection model.conf: medium
- explicitEncrypting code locally and running inference on it with homomorphic encryption (so the server never sees plaintext) is a promising, still-research-stage answer to a real emerging risk: as AI models get more capable, more of the world's sensitive data and code will flow through one or two centralized model providers, concentrating surveillance and breach risk far more than it ever was with cloud infrastructure.conf: highextendsHow LinkedIn Trains AI Job Search 8x Faster with Multi-Teacher Distillation ยท p1 โ The Cursor team's RL-based approach to getting frontier-level perceived quality out of a small, fast model (via reward signal from preferred completions) is an earlier, lighter-weight instance of the same general move the later piece formalizes as structured multi-teacher knowledge distillation.
- explicitMore than 80% of Cursor's users are on Windows machines that are often not very powerful, which (combined with the growing size of the best models) makes locally-run coding models impractical for most users even on 'beefy' hardware, because people consistently prefer the most capable model over a weaker local one.conf: high
- explicitMaking a smaller model dramatically better via targeted reinforcement learning (predicting which of many candidate completions humans would prefer) lets a product get frontier-level perceived quality out of a cheap, fast model rather than requiring a bigger model.conf: high
- explicitTest-time compute (as popularized by OpenAI's o1) is attractive because pre-training is starting to hit a data wall, and running a smaller, cheaper model longer at inference time can match the quality of a vastly larger model for the small fraction of queries that need maximum intelligence โ avoiding training (and then rarely using) an extremely expensive giant model.conf: highsupportsTravel Through the Lens of AI with Booking.com CEO Glenn Fogel ยท p1 โ Michael's 'if you stop innovating on the product, you will lose' โ moats don't protect you in this space โ matches the later, more general claim that no competitive position is secure against innovation in the AI era.
- explicitAt the time of this conversation, nobody outside a few frontier labs (and arguably not even all of them) understood exactly how test-time-compute reasoning models like o1 actually work internally, which makes it hard for competitors to decide how and whether to build on top of them.conf: medium
- explicitcontestedBuilding the best AI coding product over the next several years will be decided by continuous execution on both modeling and editing UX, not by defensible moats โ 'if you stop innovating on the product, you will lose,' which is simultaneously the threat facing Cursor from incumbents (e.g. GitHub Copilot integrating o1) and the opportunity facing any new entrant.conf: highcontradictsDeveloper Newsletter: higher usage limits, dreaming for Claude Managed Agents, and Claude Security ยท p4 โ Cursor's manifesto explicitly rejects framing the programmer's role as talking to an 'engineering department' that builds software for you, in favor of keeping the human doing every micro-decision; the later Anthropic framing of the developer's role shifting 'from co-pilot user to fleet manager' is close to the delegation model Cursor's founders argue against.
- explicitCursor's core manifesto commitment is that the programmer should remain 'in the driver's seat' โ retaining speed, control and agency over every micro-decision โ which the founders explicitly contrast with the popular vision of talking to your computer the way you'd talk to an engineering department over Slack and letting it build the software for you.conf: high
- implicitMost of the best, most enjoyable engineering work consists of a dense sequence of small, context-dependent judgment calls (trade-offs between speed, cost, and other constraints) rather than mechanically implementing an upfront, fully-written spec โ so handing programming entirely to a conversational agent would mean delegating away the part of engineering that matters most, not just the typing.conf: high
- explicitcorroboratedProgramming is already, and will keep becoming, more fun rather than less, as AI strips out boilerplate and 'cruft' and shifts the remaining human work toward taste, creative judgment and high-bandwidth intent communication (e.g. pressing Tab while 'injecting intent' continuously) rather than low-value carefulness and low-bandwidth text editing.conf: highsupports โHow AI coding companions will change the way developers work ยท p7 โ Same claim โ AI stripping out boilerplate/cruft makes programming more fun, not less โ made independently roughly two years apart; this piece is the earlier instance in the corpus's timeline.
Arguments
AI coding products should be built as full editors (or deep forks), not as plugins on top of an existing editor. strength: high
Explicit premises:
- Models' capabilities will keep improving quickly.
- Realizing those capability gains in the product requires rethinking the entire editing experience, not adding isolated features.
- A plugin architecture caps how much of the editing experience you can change.
Implicit premises:
- The team believed, as early as 2022, that 'all of programming was going to flow through these models,' which justified a large, risky infrastructure bet (forking VS Code) rather than a lighter-weight integration.
Code review and diff-review UX need to be redesigned specifically for an era where the 'author' of the diff is frequently a model rather than a human. strength: high
Explicit premises:
- As models get smarter, the diffs they propose get larger.
- Reviewing a diff gets proportionally harder as it gets larger and spans more files.
- GitHub-style code review was designed to also serve the author's experience (not just the reviewer's).
Implicit premises:
- When the 'author' is a model, there is no author experience to preserve, freeing designers to optimize purely for the reviewer โ this premise is the conceptual move that licenses departing from the familiar PR-review paradigm.
Inferences:
- This logic generalizes beyond diff UI to code-review process design generally: any review workflow inherited from a human-author era may be carrying unnecessary author-serving overhead once the author is routinely an AI.
Verification/bug-detection capability, not generation capability, is the actual constraint on how much of programming AI can safely take over. strength: high
Explicit premises:
- Current frontier models are poorly calibrated at bug detection even when heavily prompted toward paranoia.
- As AI generates a larger share of a system, a human can no longer personally verify everything by inspection.
- Without reliable verification, letting AI 'do more and more of the programming' becomes untenable.
Implicit premises:
- Generation and verification are, in the speakers' pre-training-distribution account, differently distributed skills โ Q&A and code-generation examples dominate training data far more than bug-detection-and-fix examples โ so verification does not automatically improve alongside generation.
Inferences:
- If true, investment in 'ensemble' bug-finding and verification tooling (separate from making the base model smarter) should be prioritized at least as highly as raw model capability โ a conclusion the corpus's broader 'verifiability' cluster converges on from other angles years later.
AI coding should not be built around a chatbot interface that takes a fully-specified request and returns finished software. strength: medium
Explicit premises:
- Much of the best engineering value is in iterating on an initial attempt, not specifying requirements upfront.
- A chatbot interface structurally requires specifying intent upfront, since there's no fast iteration loop inside the box.
- Delegating decisions to a bot means giving up control over the many small trade-off judgments that constitute 'real' engineering.
Implicit premises:
- Latency/speed considerations aside, control itself is treated as a terminal value for the target user (the programmer who loves programming), not merely an instrumental means to correctness.
Inferences:
- This is a direct, if implicit, rejection of the 'agent-as-engineering-department' or 'fleet-manager' framing that later becomes prominent elsewhere in the corpus (e.g. the shift from 'co-pilot user' to 'fleet manager') โ Cursor's founders are betting the opposite direction will remain more valuable for a meaningful share of programming.
Narratives
- Sualeh recalls a June 2022 bet between Aman and his IMO-gold-winning roommate's circle about whether a model would win an IMO gold medal by 2024; Aman was 'technically incorrect but one point away.'
โ Illustrates how concretely and specifically the founders were tracking and betting on capability trajectories (scaling laws) years before founding Cursor โ grounding their 'AI is coming for all of programming' conviction in a track record of correct-ish predictions, not post-hoc rationalization. - Arvid describes spending five days (with a colleague) manually migrating the whole codebase off Node.js's AsyncLocalStorage to a context object, even using 2024-era AI tools, and imagines a near future where showing the model a couple of examples lets it apply the migration everywhere in ten minutes.
โ Grounds the abstract 'speed and iteration' thesis in a concrete, recent, personally-experienced pain point, making the case for why the founders are excited about a very specific near-term capability (example-driven bulk code transformation) rather than general autonomy. - Lex recounts Cursor generating three working functions against a poorly documented YouTube API (for caption localization) that he could not find correct examples of via search, and proposes a 'tip' button as a stronger positive signal than mere acceptance.
โ Illustrates, from a user's perspective, both the genuine delight of AI-assisted coding when it works and the unresolved product question of how to signal quality/value back to the system โ which the team debates (ultimately favoring a flat subscription over per-success payment, worried that pricing per bug-fix would make the product feel transactional rather than fun).
Questions addressed
- โ
Should AI coding tools be built as plugins on existing editors or as new editors in their own right?
New editor (fork), because deep integration and control over the entire editing experience were judged necessary to keep pace with model capability. - โญ Which frontier model is 'best' for coding?
No model Pareto-dominates; Sonnet judged best all-round at the time, o1 strong at narrow reasoning but worse at inferring loose intent โ treated as a continually shifting landscape rather than a settled answer. - โญ How should humans verify AI-generated code at scale, given that models themselves are bad at finding bugs?
Partial directions offered (background bug-finding models, dangerous-code comments, formal verification, Shadow Workspace feedback loops) but explicitly framed as open, hard research problems rather than solved ones. - โ
Should local, on-device models replace cloud-hosted ones for privacy and independence from centralized providers?
Rejected as currently impractical (most users on underpowered Windows machines; people always want the most capable model), with homomorphic encryption for cloud inference proposed as a better long-term answer to the privacy/centralization worry the question is really getting at. - โญ What should programming feel like and look like in 5-10 years, and does the fundamental skill of programming survive?
The founders assert optimism (more fun, less boilerplate, more taste/judgment) but explicitly say the concrete interaction model ('going up and down the abstraction stack') is still a 'fuzzy idea' whose details are unresolved.
Gaps
- incompleteThe 'human in the driver's seat' manifesto is argued almost entirely from the standpoint of an individual programmer's workflow and job satisfaction. It does not address how this control-preserving philosophy scales to a *team* or *organization* coordinating many programmers (and, later, many agents) working on a shared codebase โ e.g. who resolves conflicting micro-decisions across people, or how 'control' is distributed rather than individually held. The corpus's later material on team-scale agent harnesses and fleet-manager framings fills in exactly this organizational dimension that the Cursor manifesto leaves untouched.
Read next: Later corpus material on team-scale agent platforms and the shift from 'co-pilot user' to 'fleet manager' (e.g. Anthropic's developer newsletter) directly engages the multi-person/multi-agent version of this question. - uninformedThe speakers' claim that current models are 'poorly calibrated' at bug-finding is offered with intuitive explanations (pre-training distribution skew toward generation/Q&A) but no cited study, benchmark, or quantified error rate โ a plausible mechanism asserted on the speakers' own technical authority rather than demonstrated.
Read next: A systematic benchmark of LLM bug-detection calibration (false-negative/false-positive rates across bug severity) would let this claim be checked rather than taken on the founders' word. - incompleteThe discussion of formal verification replacing unit testing ('you write a function, the model suggests a spec... the proof pass') does not engage with how this would handle side effects and external dependencies with no formal contract (explicitly raised by Aman re: the Stripe API) beyond a hand-wave ('maybe Stripe would write a spec for their API'), nor with the cost/complexity of formally verifying entire multi-layered codebases versus single functions, which Arvid admits is 'harder' without a concrete plan.
Read next: Later corpus material on formal methods for AI-era engineering (e.g. generating Quint/TLA+ specs via AI, model-based testing against a spec) picks up directly where this 2024 speculation leaves off.
Related documents
- The Tokens You Can't Wait For
- Developer Newsletter: higher usage limits, dreaming for Claude Managed Agents, and Claude Security
- Podcast: The AI Joy Gap: Why Some Developers Thrive While Others Struggle
- Agentic AI and Code Reviews
- Agents Over Bubbles
- The Almedra Token-Efficiency Benchmark, Updated For GLM 5.2
- AWS Expands DevOps Agent with AI-Powered Release Management to Validate Code Before Production
- Travel Through the Lens of AI with Booking.com CEO Glenn Fogel
- Experiences with local models for coding
- Presentation: The Multi-Agent Approach: Building Reliable and Controllable Software Development Automation