Reproduced on station-v0.68.
Teams control-plane relay requests appear to execute under the network sandbox context of a loaded module.
My loaded module dave/stripe-invoicing only allows:
- api.stripe.com
- api.groq.com
Running:
railcall team create "Dave Test Mesh" "Dave"
creates the team locally, but relay publication fails:
team created: tm_b4d6e4e6b9786cd9 (manifest v1)
WARNING: relay publish failed (module 'dave/stripe-invoicing' tried urllib.request.urlopen to 'railcall-marketplace-lggm.onrender.com' — not in the manifest's network allowlist (api.stripe.com, api.groq.com).)
railcall team sync fails for the same reason:
error: relay fetch failed: module 'dave/stripe-invoicing' tried urllib.request.urlopen to 'railcall-marketplace-lggm.onrender.com' — not in the manifest's network allowlist (api.stripe.com, api.groq.com).
I then disabled the Stripe module and restarted Station. The module-sandbox error disappeared.
Because the original team create had failed to publish manifest v1, the first sync reached the relay and returned 404 as expected.
With the Stripe module still disabled, I manually POSTed the exact locally signed manifest to:
POST /relay/team/manifest
Result:
PUBLISH: 200 {"ok":true,"team_id":"tm_b4d6e4e6b9786cd9","version":1}
Immediately afterward:
railcall team sync
Result:
manifest v1 (already current)
Restoring the Stripe module and restarting Station causes the Teams relay request to be blocked by the Stripe module's allowlist again.
A/B/A reproduction:
Stripe module loaded
→ Teams relay I/O blocked by Stripe module allowlist
Stripe module disabled
→ Relay reachable and manifest publish/sync works
Stripe module restored
→ Teams relay I/O blocked by Stripe module allowlist again
The Teams implementation in workbench/routes/team.py uses:
POST /relay/team/manifest
GET /relay/team/manifest/<team_id>
These are Station-level Teams control-plane operations and should not inherit the network policy of an unrelated loaded module.
Impact:
A loaded module with a restrictive network allowlist can prevent Station-level Teams manifest publication and synchronization. team create can leave a locally created team unpublished, preventing teammates from joining/syncing.
Expected:
Teams relay I/O executes in the Station/Teams control-plane network context, independently of loaded module network allowlists.
Actual:
Teams relay I/O is attributed to and restricted by the loaded dave/stripe-invoicing module's network allowlist.