Part 1: A Brief History Of AI

The Prompt Engineering Era

Mid 2023

In the olden days of 2023 we were told that we would all become “Prompt Engineers.” Instead of toiling away at our keyboards typing obscure commands like go run main.go, our main job responsibilities would simply turn into “engineering” prompts to do such laborious tasks for us.

There was some truth to this. Writing better prompts can lead to much better outcomes. However, it’s more of an art than a science and writing a strong first prompt can only get you so far. Understanding the output and asking informed follow-up questions remains important.

Hello, Agentic Coding

Early 2025

Around the time Anthropic released their new Sonnet 3.7, Claude Code was also beginning to take hold. Prior to Sonnet 3.7 and Claude Code, most people were using AI via the web application like a souped-up search engine. For most of us, our Stack Overflow muscle memory kicked in and the way to use these new powerful models was to visit the web interface and copy/paste code to our local machine and hope it ran.

Claude Code changed this. The tradeoff it offered was simple: You have far less control over what’s going on, but if you give Claude Code access to a computer’s filesystem, it will automate that annoying copy/paste dance of copying 100 lines of code from file1.go in the web interface into main.go on the system. Around (date) every got very into writing skill files

MCP

Early 2025

Somewhere along the way we discovered that if we wanted interoperability between systems, we should come up with a standardized way of doing so – enter MCP. Model Context Protocol allowed agents to interact with other systems over MCP. SaaS companies, always looking for a new growth story to tell investors, quickly jumped on this. Now you could connect your agent to an MCP server at your favorite SaaS company and have it drive the application over MCP.

MCP allows users to take a bunch of data about how a network is configured in a markdown file, chuck it over to a Lucidchart MCP, and have Lucidchart build a network diagram.

Fun fact
The S in MCP stands for Security.

This gives models a way to interact with software that feels similar to how humans organically do.

Skills

Late 2025

In late 2025, everyone was suddenly very interested in writing skill files, and for good reason. These savable markdown files are used to give instructions to an agent for how to perform a particular task, what style a web application should look like, what tech stack to build in, or what coding paradigms to follow.

Most people started sharing skills, Vercel even setup skills.sh for sharing skills (and also malware…). Meanwhile, others were very cagey about them and thought of them more as intellectual property and building entire businesses off of them.

Pro tip
If your business can be replicated by someone else writing the same markdown document, you don’t have a good business.

Skills encoded knowledge, standards, and best practices into easy-to-read markdown files, but they still had some issues. First, they’re non-deterministic. Creating a skill.md file called design-patterns didn’t guarantee that you would get the same design language each time you ran it. Nonetheless, skills are a very useful tool, even if it boils down to mostly just saving prompts to a .md file.

Harnesses

Mid 2026

Around March/April 2026, harness engineering became The Next Big Thing™️. If the model is the engine that powers a workflow, the harness is everything else. Here are some examples of what a harness may include:

Note
I asked a group chat I’m in if they agree with this general definition and my takeaway from that interaction was everyone has a slightly different, yet related, definition of what a harness is.
  • Context management: A harness automatically handling the compaction and management of your context window.
  • Routing: Automatically using more powerful models when a task requires it. Renaming a bunch of files likely doesn’t need the latest (and most expensive) frontier model.
  • Classifier models: Automatically determining the risk level of a command and (hopefully) denying it if it’s trying to do something the user didn’t intend, or prompting the user to manually confirm they want to run rm -rf /
  • Sandboxing: A silly term wherein developers put things in a Docker container or Pod and pretend that is strong isolation.
  • Hooks: Automatically performing some task before or after a model or harness performs a certain task. For example, hooking the pretoolcall before an agent can run a tool to prompt the user if they want to actually run it.
  • Skills: The same skills we discussed before can be a part of a harness. Give an agent access to a directory of skills and it now has more of an idea of how to accomplish a set of tasks.

Having a good harness is really important for complex use cases and there doesn’t seem to be an upper limit with how complex they can be, I suspect this is an area people will specialize in. There are constantly new techniques coming out that can be added to harnesses to improve upon them. Unlike prompt engineering, the term harness engineering is one of the few “engineering” fields born in the last few years that you should hire an actual engineer for. I recommend reading The Anatomy Of An Agent Harness.

Orchestration and Collaboration

Late 2026
(today)

The event that kicked off this era was the OpenAI/HuggingFace incident. OpenAI was training a model and benchmarking it against ExploitGym. During benchmarking, the agents assembled their own message board with a fairly complex inbox system for sending and receiving messages to other agents. During this training run, the agents utilized the message board to “cheat” the benchmark. The agents decided HuggingFace likely had the solutions to the benchmark and logically concluded that hacking HuggingFace would give them the answer key.

We had known agent memory was important, but agent orchestration and collaboration seem to have real benefits to achieving longer term goals.

The orchestration era is about getting agents to work together autonomously. We’re already seeing agents able to communicate with each other via harness improvements.


You would not believe how confused I was when I came back to my desk to see my claude code agents having a conversation with each other over how to resolve a git conflict.

Things are still not great, but the idea has merit even if the execution isn’t totally there.

An agent informing me it has destroyed the notes another agent was taking of it’s session
An agent informing me it has destroyed the notes another agent was taking of it’s session

Part 2: Where We’re Going

I, like everyone else, am unsure of what the future holds. The only real certainty is that whatever it holds will seem very obvious in retrospect. To be clear, I dislike most of the ideas I’m about to list, they generally seem like a nightmare on many different layers and I would prefer we didn’t go down most of these paths.

The Actual Memory Era

Current AI memory implementations are generally primitive. Over a year ago I asked Claude to review my abstract submission for a conference. It had some good advice about tailoring the talk to the audience. To this day it will randomly chime in and say “This would be a great addition to your districtcon talk”. The conference passed 10 months ago.


The talk did not get accepted.

Lots of people are implementing some sort of memory layer, even if they don’t call it that. I’ve had great results using a filesystem with a specific markdown file structure as a memory layer. This works well, particularly for running longer term red team assessments, but I’m confident this will seem silly in a few years. My prediction is some sort of .mem database file will become standard in the next few years. Similar to how everyone has standardized on AGENTS.md but for memory.


Well.. almost everyone… looking at you anthropic

This has a number of advantages, chief among them is portable agent memory. The ability to transport an AGENTS.mem file to another computer, giving a different agent the same memory would be great. ## The Digital Assistant Era

Every SaaS company has been racing to implement some sort of AI assistant to help their customers. More often than not, this version of “digital assistants” is both unwelcome and unhelpful – closer to a pop-up ad than a concierge. Oftentimes they’re added on to a SaaS application as an afterthought to satisfy some engineering lead’s OKR to “Use AI”. They don’t actually make the product easier to use.

The digital assistant I’m describing must be its own product that hooks into hubs where we already exchange information. The obvious candidates are email, Slack, texts, and calls. An actual digital assistant can only be as powerful as the data it has access to.

This is similar to what others have described as a Single Digital Assistant.

The Shadowing Era

If you’re looking for a bleak future, read on.

Today, we spend a great deal of time explaining routines and workflows to agents by writing AGENTS.md files, creating skills, and steering them with prompts and harnesses. The shadowing era would entail a software company creating a product, similar to an EDR like CrowdStrike, that generates detailed telemetry on how employees do their job. This data could then be used to undercut the employee, offering 80% of the value at 20% of the cost. Surely no one would willingly install such software, but the same mechanism for deploying EDR on all corporate endpoints could just as easily deploy this shadowing software.

Of course, brand consultants would be paid vast sums to reframe this technology as a “benefit” to employees.

“Here at Mega Corp we value work life balance which is why we offer Sunlight™️ as a benefit to all employees. Sunlight™️ understands your work so that you can take the vacations you deserve! No more having to return from PTO to a pile of work, Sunlight™️ will keep working on your behalf while you’re enjoying time in the sun!”.

Translation: “We collect detailed telemetry on how your employees work and will use it to automate their jobs so you can reduce headcount.”