Repository navigation
Webhook URLs for agents when the operator runs their own ingress markdown
#21812
boblangley
started this conversation in
Ideas
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Summary
Webhook tasks work without T3 Connect: the server accepts requests at
/api/hooks/:taskId/:token. But an agent that creates a webhook task withschedule_taskonly gets awebhookUrlwhen the environment has a T3 Connect managed tunnel. If I expose T3 through my own ingress, the agent gets nothing it can share or configure, so a human has to copy the path from the task editor.I'd like agents to get a callable URL when the operator has their own ingress.
Use case
Anyone who exposes their T3 environment with their own ingress instead of T3 Connect: cloudflared, ngrok, Pinggy, Tailscale Funnel or Serve, a reverse proxy, and so on. The webhook route works fine through all of these. What's missing is that T3 doesn't know the public origin, so it can't build a URL for agents.
A local sender on the same machine, such as a workflow engine or a CI runner, is the simplest case of the same problem: the URL is
http://127.0.0.1:<port>/api/hooks/..., and the agent can't learn it.For example, my own setup puts a hosted queue (QStash) in front of a local bridge (Trowel) that delivers to T3 on the same host, which gives me held delivery and retries. That part is my own choice; any ingress has the same gap.
What is unclear
OrchestratorMcpServicesays "A bare path is not a URL anyone can call, so agents never get one to share." Theschedule_taskdescription tells agents to ask the user to enable T3 Connect rather than share a path.webhookPathfor agents, behind the same permission checks aswebhookUrl. The review asked a maintainer to confirm whether withholding the path was intentional. It was closed without an answer.Proposed approach
Let the operator set a webhook base URL in environment settings, such as
https://hooks.example.com. When it is set and there is no relay base,webhookUrlis built from it the same way it is built from the relay base today:<base>/api/hooks/<taskId>/<token>.orchestration:operatescope, and a caller that may run the task.Alternatives, if a setting isn't wanted:
webhookPathto agents (the fix(server): expose direct webhook paths to agents #16951 shape), with tool guidance to treat it as a bearer credential: plain HTTP only on loopback, and HTTPS or an authenticated tunnel for anything remote.Questions
httpsunless it is loopback?All reactions