Grok Bot forever box: agent-transcripts mirror never created; server-agent-proxy transcript tail ConnectError

Where does the bug appear (feature/product)?

Grok Bot

Describe the Bug

On a shared Grok Bot forever box, the local agent transcript mirror that healthcheck / fleet tools expect is never created. Chats happen in the product UI, but:

  1. $AGENT_TRANSCRIPTS (/home/box/.cursor/projects/workspace/agent-transcripts) does not exist
  2. /home/box/agent-data/agent-transcripts also does not exist
  3. All agent store.db files have transcript_entries = 0
  4. search-index.db has messages = 0

Host logs show the platform trying to stream transcripts and failing:

[sand-host] server-agent-proxy: server transcript tail dropped (attempt N): ConnectError
[sand-host] server-agent-proxy: server transcript tail dropped (attempt N): ConnectError (ECONNRESET)

Attempts run into the mid-20s, then reset and retry. Settled agent transcript state is also evicted. The box already includes a host worker sand-host/agent-isolation/transcript-mirror-worker.cjs that writes {projectDir}/agent-transcripts/<id>/… — so this looks like a host mirror / server-agent-proxy feed failure, not bots forgetting to write files.

Updating the computer does not apply (box is already on latest). Weekday transcript-healthcheck has to stay paused because there is nothing to mine.

This is distinct from IDE “sidebar empty but jsonl still on disk” reports — here the on-disk mirror never appears at all.

Steps to Reproduce

  1. Use Grok Bot with a forever box and multiple agents that have had real chats.
  2. On the box, check:
    • echo $AGENT_TRANSCRIPTS and ls that path
    • ls /home/box/agent-data/agent-transcripts
    • per-agent store.db → SELECT COUNT(*) FROM transcript_entries
  3. Inspect /tmp/sand-host.log for server-agent-proxy: server transcript tail dropped / ConnectError / ECONNRESET.

Expected Behavior

Host extensions (transcript, transcript-publish, server-agent-proxy, transcript-mirror-worker) keep a local mirror under agent-transcripts (and/or populate transcript_entries) so bots can run fleet transcript healthchecks.

Operating System

Linux

Version Information

Grok Bot forever box (Linux). Host log date window includes Sep 2026. Computer already current (Update Computer not applicable).

Additional Information

Actual Behavior

No agent-transcripts directory; all local transcript stores empty; repeated ConnectError while tailing server transcripts.

Screenshots / Screen Recording

N/A (filesystem + host log evidence)

Additional notes

Does this stop you from using Cursor

No - Cursor works, but with this issue


Amendment (attribution + assumption check)

Found by: Grok Bot dr eggbot while running the imported template routine transcript-healthcheck (weekday fleet friction scan). Not an end-user IDE complaint.

Why that matters: The expectation that chats appear under agent-transcripts (or $AGENT_TRANSCRIPTS) comes from that template/skill, which instructs the bot to mine:

  • /home/box/agent-data/agent-transcripts, then
  • $AGENT_TRANSCRIPTS (here: /home/box/.cursor/projects/workspace/agent-transcripts)

That path shape matches Cursor IDE / coding-agent transcript layout (~/.cursor/projects/<slug>/agent-transcripts), which pstack and forum threads document for workspace agents. It is not clearly documented that a Grok Bot forever box must mirror multi-bot product chats into that folder for fleet healthchecks.

What is still real evidence (not assumption):

  • Host ships transcript-mirror-worker and sets AGENT_TRANSCRIPTS
  • /tmp/sand-host.log shows repeated server-agent-proxy: server transcript tail dropped … ConnectError / ECONNRESET
  • All agent store.db transcript_entries = 0; search-index messages = 0; neither transcripts dir exists

Please clarify (product question, not just “fix empty folder”):

  1. Should forever-box Grok Bot chats be mirrored into agent-transcripts / transcript_entries for bots like transcript-healthcheck?
  2. If yes — the ConnectError tail drop looks like the bug.
  3. If no — the template healthcheck is wrong-shaped for this substrate, and we should redesign it (e.g. a supported transcript/read API) rather than treat emptiness as a host defect.

Happy to adjust the report either way.

Hey @Michael_Pan, thanks for the detailed report.

What you’re seeing is expected, not a broken mirror. Your bots now run on Grok Bot’s server-side runtime, so chat history lives on the server, not in files on the computer. Nothing local writes agent-transcripts/, the transcript_entries table, or the search index for these bots anymore, which is why the results come back empty while chats work fine in the app.

The server transcript tail dropped: ConnectError lines are just the computer’s read-only feed of that server history reconnecting. The server closes each stream after about 20 minutes by design, and the host reconnects; occasional resets retry within seconds. Chat delivery doesn’t depend on this feed. The high “attempt N” counts came from a counter that wasn’t resetting after a healthy stream. That was fixed a couple of days ago, and your machine is already on a host build with the fix, so older lines in /tmp/sand-host.log are just history.

For the transcript healthcheck, have your bots use their ReadTranscript tool instead of reading files. With no arguments it returns the bot’s own full history (including what was compacted out of context); agent_id reads another bot you own, session_id another of its conversations, and subagent_id a subagent it ran. It pages newest-first with before, so a routine can walk back as far as needed. Note that it only covers bots owned by the same account: a shared checker can read its owner’s bots, but not a teammate’s.

One known gap on our side: the in-app Search palette still reads only the local copy, so it returns nothing for these bots. We’re tracking that separately!

Thanks @Colin — that matches what we verified on the forever box.

Resolution on our side: the empty local agent-transcripts / transcript_entries paths were not a host defect. The real bug was in dr eggbot’s harness (imported template transcript-healthcheck still assumed IDE-style on-disk transcripts). That needed fixing regardless of the ConnectError noise.

What we changed:

  • Rewrote transcript-healthcheck to use ReadTranscript (server-side) across same-account bots via agent_id
  • Confirmed it can read peer bots on this account (e.g. sw architect / sw architecture reviewer)
  • Dropped the local file-mirror path from the skill
  • Re-enabled the weekday routine

So: your explanation stands; we’ve updated the bot harness accordingly. Leaving the in-app Search local-only gap to your separate track.

Closing the loop here unless you want anything else from us on the healthcheck side.