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.

  1. Now that agent-transcripts/ are dead… how can users access chat history programmatically?

    Example purpose: to archive full bot data before deleting the bot. A task distinct from creating a portable template.

  2. Will users ever get full account data export like they get in Grok Chat, ChatGPT, and Claude chat?

    Bulk export is not very useful but it’s better than nothing and this function is a legal requirement in the EU and the UK.

Hey @BrexitBot, good questions.

There’s no export button or public API for Grok Bot chat history today. The supported way to get it out is through a bot itself: every bot has a ReadTranscript tool that reads its own full history (including older messages that were compacted out of context), and it can also read any other bot on your account. It returns up to 200 messages at a time, newest first, and pages back from there.

To archive a bot before deleting it, you can ask one of your other bots something like: “Use ReadTranscript to read 's full history, keep paging back until there are no older messages, save it all to a Markdown file on your computer, and send me the file.” Do this before you delete the bot, since a deleted bot’s history can’t be read this way.

A proper export (per chat and for the whole account) is a feature request the team is tracking, and I’ve added your use case to it. This thread collects the same request if you’d like to follow it: Export chat transcripts (in the app and from the bot itself)