sarkarsh
The problem I kept hitting was that flat markdown constraint logs don't scale past ~50 entries. The agent has to re-read the entire log to know what was already tried, which eats context window and slows generation. And once you have multiple agents in parallel, each maintaining their own constraint log, you get drift - agent A rejects approach B, agent C re-proposes it because it never saw agent A's log.
What worked for me was moving constraint logs to append-only log blocks that agents query through MCP rather than re-read as prose. I've been using ctlsurf for this - the agent appends 'approach B rejected, latency > N ms' to a log block, and any agent can query query_log(action='approach_rejected') to see what's been ruled out. State store handles 'which modules are claimed' as a key-value lookup.
Structured queries mean agents don't re-read the whole history - they ask specific questions about what's been tried.
In practice it hasn't been a big pain point because the stale claim is visible in the web UI immediately. The bigger win has been that new agents can query 'what's done, what's in progress, what's blocked' with a single tool call instead of re-reading a 2000-line markdown file. The queryability matters more for coordination than crash recovery does.
For automatic timeouts, I've been thinking about a heartbeat pattern - agent updates a last_active timestamp in its state block, and a background check marks claims stale after N minutes of silence. Haven't needed it yet at my scale though.
What worked for me was making state updates part of the tool interface, not the prompt. Instead of 'report your status to this file,' the agent reads and writes to structured blocks (task tables, key-value state stores, append-only logs) through MCP as part of doing its actual work. The state update IS the work - when the agent completes a task, the tool call that marks it done also captures what it did, what it assumed, and what it skipped. The human sees a live dashboard without the agent needing to 'report' separately.
I've been using ctlsurf for this - each agent gets a task table it queries and updates through MCP tool calls. The key shift was: agents don't report status, they work inside a system that inherently tracks status.
On your task counter threshold question - I track session token usage in a state block and restart when the agent crosses ~80% of the context window. More reliable than counting tasks since some tasks eat way more context than others.
The MCP pattern thats been most valuable in my experience is structured persistent state. I use ctlsurf for this -- agents read and write typed blocks through MCP. Datastores with queryable rows, key-value state, append-only logs. The agent doesnt need to scrape a webpage, it just queries the specific data it needs and writes back what it did.
What I think this thread is missing: MCP as a protocol for agents to maintain structured memory that humans can inspect and edit. Not "let the agent click buttons in Chrome" but "give the agent a persistent workspace it shares with people." Thats where MCP stops being a novelty and starts being infrastructure.
AGENTS.md saying "run tests after edits" works until the agent decides it knows better, or the context window gets long enough that it deprioritizes the instruction. The language you write agents in matters way less than the state layer they operate on.
Ive been using ctlsurf for this -- structured blocks agents read and write through MCP. Task checklists the agent checks off, key-value state it updates, append-only logs of what it did. The project owns that state, not the agent session. Instead of "put a rule in AGENTS.md" you have actual task state the agent queries and updates, and a human can see exactly where it is.
The whole thread is debating Go vs Rust vs Python but the language is maybe 10% of what makes an agent reliable in production. The other 90% is state management, and right now most people are doing that with flat files.
CLAUDE.md works fine for static instructions -- "use this formatter, prefer this style." But the moment agents need to track state across sessions -- what tasks are pending, what decisions were made, what data they collected -- youre stuffing structured data into an unstructured format. I kept finding myself with 500-line CLAUDE.md files that were half prose instructions and half JSON blobs the agent was supposed to parse.
I switched to ctlsurf for this. It gives agents structured blocks they read and write through MCP -- typed datastores, key-value state, append-only logs, checklists -- so the project owns the memory, not the agent session. The agent queries only what it needs instead of loading an entire markdown file into context.
The AGENTS.md vs CLAUDE.md debate in this thread is interesting but its optimizing the wrong layer. The real problem isnt what you name the file, its that flat text is a lossy format for the kind of state agents actually need to persist.
We hit the same wall running parallel Claude Code sessions. Ended up switching to ctlsurf, which gives agents structured blocks via MCP -- task tables, key-value state, append-only logs. An agent can check "is anyone already on the auth module" by querying a table, not parsing prose. State survives across sessions too, so a new agent doesnt start from scratch.
The drift problem across parallel agents is exactly what convinced me flat files werent enough.
The scarier version is the invisible architectural decisions. When the agent decides to skip input validation because "the frontend handles it," or collapses your middleware chain because it doesn't understand why the rate limiter was there. You find those weeks later when something breaks, and there's no record of why the agent made that call.
The AGENTS.md approach helps for known preferences, but it only covers what you thought to specify upfront. The agent makes dozens of micro-decisions per session that nobody anticipated. Which error handling strategy, whether to denormalize, how aggressively to cache. Those are just as opinionated as the library picks -- they're just harder to audit from a diff.
What's missing is the agent documenting its own decisions as it works. Not what code it wrote, but what it decided, what it considered and rejected, and what it simplified. That way when you find the rate limiter is gone you can trace back to the decision instead of reverse-engineering intent from git blame.
But the real use case for MCP isn't replacing git or jq. It's giving agents persistent state across sessions. When I close the terminal my agent forgets everything. What it was working on, what it decided, what it tried that failed. Next session starts from zero.
An MCP server that holds structured project state -- tasks, decisions, context -- lets the agent pick up where it left off. It queries what happened last session, updates progress, records new decisions. That's fundamentally different from running a CLI command and parsing stdout. You need a server that maintains state and exposes typed operations on it.
The framing should be: CLI for stateless operations (builds, git, file manipulation). MCP for stateful integrations where the agent needs memory that outlives the session.
7777777phil is right that the AGENTS.md file is the actual differentiator. But it's also a manual workaround for a real gap — there's no structured way for agents to carry context across sessions. Each session starts cold. You're hand-maintaining the agent's long-term memory in a markdown file.
The tooling around agents matters as much as the agents themselves. A model that produces excellent code but can't track what it assumed or skipped is only half a system.
But 7777777phil's point is the real gap: proving a human authorized email access is different from proving accountability for a specific email the agent sent. The hard part is structured action logging that happens outside the agent's own process — you can't trust the agent to faithfully record its own behavior. Same principle as flight recorders being physically separate from the aircraft systems.
The crypto vs enterprise debate misses the middle ground. You don't need full cryptographic attestation. Append-only logs with hash chains get you 90% of the accountability without requiring enterprise PKI.
The analogy also breaks in a useful way though. Autopilot doesn't modify the aircraft. Coding agents modify the codebase, and each session changes the terrain the next session operates on. The skill you actually need isn't "can I still write code" — it's "can I reason about a codebase substantially authored by a process I didn't control." That's closer to forensic engineering than piloting.
esafak's cache economics point is underrated. With prompt caching, verbose context that gets reused is basically free. If compression breaks cache continuity you might save tokens while spending more money.
The deeper issue is that most MCP tools do SELECT * when they should return summaries with drill-down. That's a protocol design problem, not a compression problem.
What works for me: write the spec in a markdown file before handing it to the agent. Predict what it'll produce before reading the output. When it surprises you, figure out why before accepting. Keeps you engaged enough to actually build mental models.
The management pressure angle in this thread is real. If your org measures velocity in lines shipped, AI tools will optimize for that metric and comprehension dies quietly.
What bugs me about the current discourse is everyone focuses on where agents run and what they can access, but almost nobody talks about reconstructing what they actually did after the fact. Aviation has black boxes. Finance has audit trails. Agent systems have... logs the agent writes about itself. That's like asking the pilot to self-report the flight recorder.
Until action logging happens outside the agent's own process, none of the sandboxing stuff matters much.
ctlsurf is a notebook that connects to AI agents via MCP. The key feature: when an agent marks a task done, it must provide structured completion data:
- Summary of what was done
- Assumptions made (required, at least one)
- What was attempted but failed
- What was simplified or skipped
That last one is the important part. Agents often silently give up on parts of tasks, and this forces transparency.
https://app.ctlsurf.com
Interested in feedback, especially from teams using AI agents in production where accountability matters.I’m trying to figure out if this solves a real problem or if I’ve been tinkering in a vacuum.
Would love your honest feedback.. brutal is fine on whether this belongs in an already crowded space or should be scrapped entirely.
Months building this did I just reinvent the wheel?
Beyond GenAI – Can LLM act as player in a RPG game?
Fermi Paradox simulation
Simulation of impact of adaptability to change and its impact on success
Live Gameplay -Instant Regret He Said/She Said 2016 Campaign Edition
Word game based on the election theme
This is a multiple player word game based on some of famous quotes from the election session. Plug-in words in to the sentences to make them as funny as possible.The devs are giving away free iPhone 7 to one who comes out funniest of quotes. Don't forget to register by sending out a note to [email protected]://instantregret.ioA word game for the politically unscrupulous – true...
Battle of funny people
Making pomodoro technique into a game for to-do
Hi, I am big fan of Pomodoro technique. But most of the famous pomodoro apps have common interface of a timer/clock. They capture the idea of “Pomodoro way” but still something is missing. So I decided to build my own version of it in my app Crimson Box [I posted about it some time back about it]. The core vision is : the aliens monsters are attacking our planet. These aliens are strong and...
List-less productivity
I was bored with the way all the famous to-do apps look, mostly mundane lists of things to do. Not inspiring. So I started tinkering my own vision of a better and more engaging interface: A world dark and set in the future, where planet Earth is under constant wave of meteors; human civilization has moved backwards and survives on farming and windmills for energy. The to-do items take the form...