Repository navigation
Support MCP Events in T3's MCP server #19534
Replies: 10 comments
|
+1, with the current code and spec state attached, since the path here is shorter than it looks. Use case. An agent drives T3 through the T3 Connect What the code does today (main @ 3962ae8)
What the MCP spec offers
Suggested order
Open questions
|
|
+1 from a second production use case, with probe results from the current nightly. Setup. Two ChatGPT Dots dispatch engineering work into T3 through the Gap. The Dot can't be woken when a T3 thread it owns finishes, fails, or needs input. The only supported inbound route ChatGPT documents for Dots is MCP Events. Without it, every follow-up turn needs a human message or polling. Probe (0.1.1-nightly.20261018.3335). Related finding that affects anyone wiring Dots to T3. Dot tasks run as a ChatGPT cloud agent that reaches the machine through Minimum useful events for us: run completed/failed and runtime-request (input needed) on threads the subscriber launched, filterable by thread ID, matching the proposal above. |
|
+1. Until this lands, I've been using a small watcher on my own box as a stopgap: t3-wake (MIT). It runs next to T3 as a systemd user service, watches the runs of threads my orchestrator launched, and sends a signed webhook when a run completes, fails, or needs input. I use it to wake a Grok Bot agent that drives T3 through One caveat: if a run ends while a background command or subagent is still going (#15099, #17625), the watcher sees it as finished, and a later wake from that background work doesn't start a new run. I work around it by telling threads to finish their checks in the same run. Happy to retire it once MCP Events or the outbound callback in #6933 ships. |
|
+1. Please add native MCP Events support for ChatGPT and other external agents. I use T3 Code on macOS and have connected it to ChatGPT as a cloud MCP plugin through T3 Connect with OAuth. The workflow I want is straightforward:
Holding The minimum useful events for me are completion, failure, and input/approval requests, filterable by thread or run ID. A signed webhook with a status-only payload would be enough; the agent can fetch the full result through MCP afterward. I also checked the installed Please consider supporting this directly in T3 Code so external agents can follow long-running work without polling or requiring another human message. |
|
I opened #22595 as a concrete version of the webhook half of this, so there is something specific to say yes or no to. It does not add What it does:
On the open questions above:
I know a feature needs a decision on direction first, so please treat the PR as a proposal. I'm happy to reshape it or close it. |
|
I'd like a maintainer decision on the direction and scope below before opening a PR. A reviewed implementation is ready, and I can reshape it or drop it. Problem. An outside agent that starts work through Field testing. This has been tested in a live environment with a ChatGPT dot, with events delivered successfully. It's based on a working solution that has been running on a four-machine fleet for more than 30 days. Proposed scope: native MCP Events with webhook delivery, in the shape ChatGPT already supports (OpenAI docs).
Two choices I'd like you to confirm.
Size. About 3,500 lines of server code (most of it the fold, the subscription service and the hardened sender), plus about 4,000 lines of tests, and a new migration. Out of scope: poll and stream delivery, replay cursors ( This differs from #22595, which was closed for missing approval. That PR added a T3 tool with its own callback shape; this one uses the MCP Events methods, so ChatGPT and other MCP Events clients can subscribe directly. Models used: Claude Opus 5.5, GPT-6.1 Sol and GPT-6 Astra. Is this direction and scope approved for a PR? |
|
I tested this use case with Dot on macOS. It works through a separate bridge, without changing T3 Code or maintaining a fork. The path is:
The bridge uses a read-only WebSocket subscription to T3 Code’s In the end-to-end test:
The The bridge stores checkpoints and deduplication state in SQLite. Restart recovery was tested. My goal is to let Dot coordinate multiple T3 coding sessions. Events wake Dot; it then uses the existing T3 MCP integration to read context and decide what to do next. Native MCP Events support would remove the need for this separate bridge and its dependency on T3’s internal WebSocket interface. This experiment confirms that the Secure MCP Tunnel → MCP Events → Dot part works for my account. |
|
+1, with one more use case: an always-on personal agent (Hermes, running as a systemd service) that I drive from Telegram. It works in short turns, so it can't hold What I need from this is the thread id, status (completed / failed / waiting for input) and the thread link, for threads the agent itself launched or messaged. A per-thread subscription or callback with a signing secret would cover it. An environment-wide stream isn't needed. |
|
Hi T3 Code team, I’d like to add my support for this direction. My use case is using ChatGPT Work to supervise Claude and Codex agents working in T3 Code. Once Work hands off a task, it needs a dependable signal to resume when the run completes, fails, pauses for approval or other human input, or is interrupted/stopped. Polling or holding A secure, signed, status-only webhook for those events would be immediately useful; eventual alignment with native MCP Events would also give ChatGPT Work and other external MCP clients a standard subscription path. The thread-watch proposal in #22595 looks like a practical step toward that goal, with interruption notifications especially important for a supervisor to distinguish a stopped run from work that is still in progress. I understand this is a new feature and requires maintainer approval. Could you advise whether this scope fits the project direction and what approval or narrowing would be needed before implementation proceeds? Thanks for maintaining T3 Code. |
|
Could out-of-order delivery be an explicit acceptance case alongside deduplication? For example, a retry of run A's finished event arrives after run B has requested approval in the same thread. A stable event ID identifies the duplicate but doesn't tell a supervisor which state is current. In the agent-monitoring work we're doing on Sinaps Studio at SinapsData, I'd treat the callback as a wake-up hint and re-read current state under the subscriber's access before acting. Including an orchestration sequence with the run/request IDs could make that distinction testable without sending transcript content. |
Uh oh!
There was an error while loading. Please reload this page.
Why
External agents like ChatGPT can start T3 threads through MCP, but once their own turn ends, they aren't notified when those threads finish, fail, or need input.
MCP Events would let external agents subscribe to these changes and automatically resume their conversations, without polling or manual intervention.
How
2026-07-28support and exposeevents/list,events/subscribe, andevents/unsubscribethrough the existing/mcpendpoint.run.updatedandruntime-request.updatedevent streams to publish thread-specific updates, filterable by thread ID.Related: #18490 (MCP protocol negotiation)
Moved from #19480 per maintainer request.
All reactions