Repository navigation
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Send Data that is not an object as `data`, so instructions never fail the step. - Tell users what to do on a 410 or 429, and to set the task's replay key. - Offer T3 Code to generated workflows through the built-in step allowlist. - Log only the hostname when a fetch connection resets, so a token in the URL stays out of logs. - Mark Beta steps on the catalog node instead of a separate template id list. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A workflow saved through the API or MCP gets no default for an optional input, so the step sent only the instructions. The agent docs now also cover the 410 reply, keeping the result with output_variable, and what turning the flag off stops. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A T3 Code step runs on its owner's T3 Code account. Only the workflow's owner, an org admin, or someone the owner shares it with as an editor can now change a workflow with a T3 Code step, live-test it, or start runs by hand. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The T3 Code step can now set itself up from a T3 Code connection in MCP servers settings. The member picks a machine and a project, and PostHog creates a T3 Code task there that starts a new thread for each run, then fills in the step's webhook URL. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…o feat/t3-code-thread-picker
…r write paths Turning a T3 Code workflow off stays open to every editor. Publishing a draft, restoring a revision and approving a suggestion now need the owner or someone they share it with. A transactional email workflow refuses a T3 Code step, because every send would start a run. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
T3 Code creates a task only in a project with a default model. The setup panel now says so when no project on the machine has one, and says when the step already sends its runs to a task. The workflow building docs point agents to the in-app setup. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A teammate's save or canvas enable that raced the owner adding a T3 Code step passed the check on the read state. Both writes now repeat the check on the locked row. The bytecode refresh command also crashed on workflows without a creator, because the check read the user of its bare request. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- A late reply for a machine or project the member left no longer replaces the projects or sets the step's webhook URL. - A failed project load offers "Try again", and a machine retry clears its old error. - Only a signed-in member can use the T3 Code setup endpoints, so an API token cannot answer its own approval. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…flow Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…er left - A late failure for a machine or project the member left no longer clears the current projects or shows the old error. - The machine and project pickers wait while the task is created. - The 403 for API keys says that only a signed-in member can set up the step. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…o feat/t3-code-thread-picker
The previous check called the unenforced most-specific resolver, which the repo guard forbids, and in legacy resolution a teammate with an object-wide viewer rule and a resource-wide editor rule could act for the owner. The check now uses the enforced methods, and a share must name a member or role. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…content A teammate could restore a revision or approve a suggestion that stages a T3 Code step on a workflow without one, and both checks ran before the row lock. The early check now covers the staged actions, and both services check the locked workflow again. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…th a t3 code step Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…o feat/t3-code-thread-picker
…trol is off Without the access control feature, the legacy resolver returned the default editor level before it applied specific_only, so every member counted as shared. Only explicit member or role rules count now. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…o feat/t3-code-thread-picker
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…workflows Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…o feat/t3-code-thread-picker # Conflicts: # products/workflows/skills/building-workflows/references/graph-schema.md
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The T3 Code step now sends a webhook-id header that stays the same across retries, and no longer sends x-posthog-delivery-id. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
t3_project_list returns at most 100 projects and a nextCursor. The projects endpoint dropped the cursor, so a member could not pick a project past the first page, and the panel could say no project has a default model when a later one does. The endpoint now takes an optional cursor and returns next_cursor. The panel offers "Load more projects", which asks for approval like the first page because an approval covers one call with its exact arguments, and appends the page to the projects already loaded. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A hidden Node destination template, template-t3-code. It posts the workflow's instructions, event and person to a T3 Code webhook task and signs the body through the webhook fetch's hmac_sha256 option, with a webhook-id that stays the same across retries. Connection-reset retry logs in cdpTrackedFetch now carry the hostname and template id instead of the full URL, which can hold a token. The flag gate, the step catalog entry and the icon land in the Django and frontend PR, which must merge first. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t list A later page that was still loading when the member left a machine and came back passed the old machine-and-cursor check once the fresh first page restored the same cursor, so it was appended to the new list. Each first-page load now gets a new list id, and a later page lands only on the list it was asked for. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Move the panel's branching into logic selectors, and render the machine field, project field and status from their own components under BindLogic. Copy and data-attr values are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…uests The executor sends no body for GET and HEAD, so every signer must sign the empty body. Only the HMAC-SHA256 signer had a receiver-side test for that. Standard Webhooks now verifies against the bytes received for POST, GET and HEAD, and SigV4 re-signs the received GET and HEAD request as AWS does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…o feat/t3-code-thread-picker
…t/t3-code-thread-picker # Conflicts: # products/workflows/backend/presentation/views/hog_flow.py # products/workflows/skills/building-workflows/references/graph-schema.md
Contributor
|
React Doctor found no issues in the changed files. 🎉 Reviewed by React Doctor for commit |
Silthus
changed the base branch from
feat/t3-code-workflows-step
to
feat/t3-code-step-gate
November 2, 2026 11:47
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
T3 Code is an untrusted upstream. A projects value that is not a list of objects with a string id and title now gets an actionable 400, like other failed tool calls, instead of a server error or a project without an id. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ints to it After a member creates the task, editing or clearing the step's webhook URL left the success banner up and hid the create button. The banner now depends on the step's current webhook URL matching the created task's. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A reply whose projects field is missing, false or an empty object read as an empty list, so the picker showed no projects instead of asking the member to update T3 Code. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
|
This PR hasn't seen activity in a week! Should it be merged, closed, or further worked on? If you want to keep it open, please remove the |
Contributor
Author
|
Closed in the 2026-11-13 draft triage: no map or thread owns the T3 Code step, and nothing replaced it. The branch stays. Its webhook-signing base, #127117, goes ahead on its own. |
This branch is being deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Impact: Grow Workflows: faster setup of the T3 Code step.
Note
Stacked on #127225 (flag gate and catalog entry), and also needs #127118 (Node template, on #127117). Moved from the fork PR #126492, which could not run CI.
Until #127118 merges, this diff also shows its Node template files.
Warning
🟡 Merge risk: medium · two-way door (merge-risk rubric)
workflow-t3-code-stepflag, signed-in members only, approval per call, stale replies dropped.Changes
mcp_storefacade function, the skill reference, and a panel split with no visible change (not rendered).services/mcptypes ship with the serializer.How did you test this code?
Test rationale: API tests with real MCP installations and a faked T3 Code catch leaked connections, self-approving API keys and hidden errors. Logic tests catch a late reply, or a late page of projects, from a machine the member left. A paging test catches a dropped cursor that hides projects after the first 100.
Release status
Docs update
🤖 Agent context
Autonomy: Human-driven (agent-assisted)
Agent: Claude Code, Claude Opus 5.5
Skills:
/improving-drf-endpoints,/writing-tests,/writing-ui-components,/writing-pr-descriptionsMore context for AI agents
t3_project_list,schedule_task), not a new integrationInvolvement: design pass by GPT-6.1 Sol; qa-swarm panel rounds 1 (7 lenses) and 2 (6 lenses) with GPT-6.1 Sol and Claude Opus 5.5; seven final reads; live run captured, plus a replay-key run at 4492b78. On PostHog/posthog: a GPT-6.1 Sol review at 7101ee3 led to the paging fix; a final read led to the late-page guard.
schedule_task(fix(server): scheduled tasks created over MCP can set their model and effort pingdotgg/t3code#23566) would lift the default-model limit.workflow_t3_code.pyand the approval flow int3CodeTaskSetupLogic.ts.🤖 Generated with Claude Code