Associate Teaching Professor
Carnegie Mellon University
I've been asking for and working on proactive AI coding tools for several years.
It is now 2025. What is the state of proactive tooling? Have agents taken over yet? Will my environment issues automatically get resolved before I even see the error message? Can Cursor get TLS working properly for my vibe-coded app when I forget to set it up? Can Copilot interrupt me before I go down a rabbit hole to fix the wrong thing?
No, not really.
But they can still proactively make suggestions about what code to change next.
Or they can reactively make suggestions based on a prompt while using tools.
I just read a really interesting paper about the pros and cons of proactive AI coding tools that got me thinking about the topic again. (Assistance or Disruption? Exploring and Evaluating the Design and Trade-offs of Proactive AI Programming Support)
They designed a proactive AI code tool, Codellaborator, that goes beyond typical gray-text suggestions by being strategic about the timing, the visual indicators, and the scopes of interaction for code suggestions.
It is just the tip of the iceberg though.
Why aren't the commercial tools in this space pushing harder on the user experience? They seem to be taking the shotgun approach: more suggestions in more places and more often. But I don't want more suggestions! I don't need more code thrown at me. I want a small number of high-value episodes of assistance as if a professional developer was sitting beside me.
Generating the next code change is great, but there is opportunity for so much more.
In fact, I previously said:
If I had a personal programmer that sat next to me, how would I work with them? Would I give them a sticky note with the task and wait for them to come back with the code for me to verify?
Or would we ask each other clarifying questions, point out significant details, discuss design tradeoffs, and show incremental progress as we work?
Innovating on the user experience is hard, so instead, companies continue to ship an integration with yet-another-model that generates code.
Read more of my thoughts on the topic: