Skip to content

[Bug]: Mandatory PR watcher blocks custom VCS/CI workflows; allow custom providers or full opt-out #22369

Open

Description

@vanilla-wave

Summary

T3's mandatory PR-watching instructions break development workflows using custom VCS/PR and CI systems. When the built-in watcher cannot serve that workflow, the agent still treats T3's instructions as a prohibition on alternative CI monitoring. This turns an unsupported integration into a blocker for otherwise possible work.

Area

Not sure — host-injected agent instructions / PR and CI monitoring.

Steps to reproduce

This describes the reported workflow; it is not a newly executed minimal reproduction.

  1. Use T3 with a custom VCS/PR and CI workflow that the built-in PR watcher cannot handle.
  2. Ask the agent to monitor CI status and continue development once checks finish.
  3. Ask it to use the workflow's own CLI/API or another waiting mechanism.
  4. The agent refuses alternative monitoring because T3's host instructions require its watcher and prohibit polling or running another watcher.

Expected behavior

The agent can complete user-authorized CI monitoring through tools appropriate to the project's VCS and CI system. An unsupported built-in integration should not prevent that.

Please provide either:

  • An extension point for a custom VCS/PR/CI provider, including status monitoring and completion notifications.
  • A setting to fully disable the built-in PR integration, including the injected instructions that mandate linking/watching PRs and prohibit alternative monitoring.

Disabling the integration must change the agent instructions as well as the UI/tools. Hiding controls while leaving the prohibition in place would not resolve the blocker.

At minimum, the watcher mandate should apply only when the watcher supports the actual provider and can monitor the requested PR. Tool availability alone is not sufficient.

Actual behavior

Attempts to arrange CI monitoring repeatedly hit the host-level restriction. The agent explicitly says (translated into English):

"Ordinary waiting is currently prohibited by the T3 host instruction, which requires its watcher."

The relevant injected instruction requires watch_pull_request when available and tells the agent not to poll or run its own watcher. It does not provide an explicit fallback for custom or unsupported providers.

The resulting deadlock is: the required integration cannot handle the workflow, while the agent considers the usable alternatives forbidden.

Impact

Blocks work completely for the affected workflow. The agent cannot carry the development loop through CI completion, and repeated attempts to establish monitoring are rejected on the same instruction-level grounds.

Workaround

No reliable in-T3 workaround established. Asking the agent to use another monitoring mechanism still encounters the host instruction.

Broader issue: configurable host instructions

This is not the first time T3's host-injected instructions have disrupted my development workflow. The PR watcher restriction is one example of a recurring problem: host-level workflow rules prevent the agent from following the development process I actually need.

I strongly want a supported way to disable or configure T3's injected workflow instructions, globally and/or per project. This should cover the instructions themselves, not just individual integrations or UI features. Users need control over which T3 workflow policies apply so that project-specific tooling and development processes remain usable.

Privacy

This report intentionally contains no environment details, private repository or service names, internal URLs, local paths, session identifiers, or session logs.

Activity

  1. vanilla-wave commented on Oct 26, 2026

    @vanilla-wave
    Author

    A workaround that I have been using: put a filtering wrapper between T3 and the real Claude/Codex provider executable.

    The general setup is:

    1. Configure the provider executable in T3 to point to your wrapper script.
    2. Have the wrapper launch the real provider and forward its protocol traffic, filtering T3-injected workflow instructions before they reach the provider. For instructions supplied through launch arguments/settings rather than protocol messages, filter those at the corresponding entry point.
    3. Remove the T3 policy blocks that force its PR linking/watching workflow and prohibit other waiting mechanisms. Keep the actual user request, repository instructions, native provider instructions, and unrelated protocol fields intact. If you also hide T3 tools, remove the associated instructions as well: hiding tools alone can leave the agent following rules for tools it cannot use.

    This lets my own workflow handle “wait for CI through the project's CLI/API, then run the next script / continue the task” without depending on T3's PR integration supporting that host.

    For Codex, a relevant filtering point in current T3 source is turn/start.additionalContext: T3 uses t3_code_runtime (which contains the <pull_request_linking> policy), t3_code_orchestration_*, and t3_code_tools. These entries are not all equivalent; filter the unwanted policy rather than blindly deleting every developer message. Claude has a different injection path, so it needs its own handling.

    This is a workaround, not a stable integration contract. I had to update my wrappers after the latest T3 update. Instruction wording and delivery can change: #24850 rewrote the policy text, and #24737 changed how Codex mode instructions are supplied. Filters based on exact old sentences are fragile. Recheck what actually reaches the provider after upgrades, including resumed conversations where earlier instructions may remain in history.

    A supported setting to disable/configure the injected workflow policies would still be preferable to maintaining these wrappers.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions