| #1029 |
Pre-installed welcome_email app and api/app_templates welcome emails interpolate caller values into HTML unescaped
Found during #1018 sweep, not fixed there: enterprise/apps/pre_installed/welcome_email.py send (reci...
|
in-progress |
low |
2026-10-20 06:03 |
- |
|
| #1028 |
Permission check for an unknown tenant answers 500 'Permission check failed' instead of 403/404
Found during #1020 (live): GET /api/v1/analytics/queues?tenant_id=nosuchtenant1020 as admin@test: re...
|
in-progress |
low |
2026-10-20 06:03 |
- |
|
| #1027 |
/api/v1/mcp/servers routes carry no permission check
Found during #1001: GET/POST /api/v1/mcp/servers and DELETE /api/v1/mcp/servers/<name> (api/mcp_regi...
|
in-progress |
medium |
2026-10-20 06:03 |
- |
|
| #1026 |
tools.mcp.call cannot import the MCP client: mcp 2.0.0 has streamable_http_client, code imports streamablehttp_client
Found by the #1001 fork (live, tenant test, runs 68fb8c37 and fca7638c failed with ImportError). uv....
|
in-progress |
high |
2026-10-20 06:03 |
- |
|
| #1025 |
GET /workflows/<id>/metrics returns 500 for every existing run (queries jumper.e_/c_ by a run_id column they do not have)
Found during #1020 (live, tenant test, public URL, 2026-10-20): GET /api/v1/workflows/0cf24500-6508-...
|
in-progress |
medium |
2026-10-20 06:03 |
- |
|
| #1024 |
Cancel route kills activity PIDs from the api container's PID namespace
Found while doing #916. api/blueprints/v1/workflows_lifecycle.py cancel_workflow reads process_pid f...
|
in-progress |
high |
2026-10-20 06:01 |
- |
|
| #1023 |
get_jumper_client(queue_name=X) ignores X after the first call: spawns land on the process singleton's queue
Found while doing #916. engine/jumper_client.py get_jumper_client() is a process singleton; queue_na...
|
open |
high |
2026-10-20 06:01 |
- |
|
| #1022 |
ShellOutputStreamer leaks the stdout/stderr pipe of every streamed shell command
EARS: When ShellOutputStreamer.run finishes (normally, on timeout or on a non-zero exit), it shall c...
|
open |
medium |
2026-10-20 03:04 |
- |
|
| #1021 |
hwec dsl-prompt fails in the deployed image: engine/cli/DSL_PROMPT.txt is not in the highway-core package data
EARS: When highway-core is installed from its wheel (the Docker image does uv pip install ./docker/h...
|
open |
medium |
2026-10-20 03:04 |
- |
|
| #1020 |
Statistics routes have no permission check; query route leaks a DB connection per call and answers 200 for missing runs
Found during #1012. (1) GET /workflows/stats, /workflows/<id>/metrics, /workflows/heatmap carry @spe...
|
in-progress |
medium |
2026-10-20 03:01 |
- |
|
| #1019 |
Approval status endpoint is unauthenticated and cross-tenant; approver IP taken from X-Forwarded-For first hop
Found during #1010. (1) GET /api/v1/gateway/approvals/<approval_id>/status has no auth and queries p...
|
in-progress |
medium |
2026-10-20 03:01 |
- |
|
| #1018 |
User-welcome and invitation emails interpolate unescaped values into HTML
EARS: When the API builds an HTML email body, every interpolated value shall be HTML-escaped. Found ...
|
in-progress |
medium |
2026-10-20 03:01 |
- |
|
| #1017 |
Unit tests outside tests/unit/db write to highway_db_v2; root conftest runs UPDATEs via psql
EARS: When any pytest run collects tests/unit/api or tests/, no test or hook shall write to highway_...
|
closed |
high |
2026-10-20 03:01 |
- |
|
| #1016 |
Approval email token is not bound to the approval id in the URL
EARS: When GET /api/v1/gateway/approvals/<approval_id>/respond validates a signed token, the API sha...
|
in-progress |
high |
2026-10-20 03:01 |
- |
|
| #1015 |
Tenant-reachable tools: unverified static findings from the #1005 tools.* sweep
STATIC claims from a read-only subagent sweep during #1005. None reproduced; each needs a live repro...
|
in-progress |
high |
2026-10-20 02:52 |
- |
|
| #1014 |
tools.workflow.spawn takes tenant_id from a workflow variable; definition lookups by name/id are not tenant-scoped
EARS: tools.workflow.spawn shall submit the child under ctx.tenant_id only. get_latest_definition an...
|
in-progress |
critical |
2026-10-20 02:52 |
- |
|
| #1013 |
Tenant users can list, pause, drain, resize and delete shared platform workers (/api/v1/workers*)
EARS: The worker list and worker control endpoints shall be available only to platform admins (requi...
|
in-progress |
high |
2026-10-20 02:52 |
- |
|
| #1012 |
Bad caller input that reaches SQL returns 500 instead of 400
EARS: If request parameters are invalid (e.g. /workflows/stats?since=garbage), then the API shall re...
|
in-progress |
medium |
2026-10-20 02:38 |
- |
|
| #1011 |
Global ValueError handler echoes exception text to clients
EARS: If an unhandled ValueError reaches the API error handler, then the response shall carry a stab...
|
in-progress |
medium |
2026-10-20 02:38 |
- |
|
| #1010 |
gateway_approvals.py renders error text into HTML without escaping (XSS)
EARS: When the approval gateway renders an HTML page, every interpolated value shall be HTML-escaped...
|
in-progress |
high |
2026-10-20 02:38 |
- |
|