Tarek Belkahia
70a64db532
feat(gateway): deliver MEDIA files that live inside a remote terminal sandbox ( #466 )
...
`MEDIA:/path` only delivered when the file existed on the gateway host.
With the ssh / modal / daytona / singularity / vercel backends the agent's
artifact sits on another filesystem, so `validate_media_delivery_path`
rejected it and the attachment vanished with a "Skipping unsafe" log line —
the #1 gap for sandboxed deployments.
`BaseEnvironment.fetch_file` pulls a regular file out of any backend over
the exec channel (base64, marker-fenced, size-bounded INSIDE the sandbox so
/dev/zero cannot flood host memory — the same shape image_source already
uses). `gateway/media_fetch.py` runs only when a remote backend is active
and the host lookup failed: the sandbox path is screened against the SAME
denylist as host deliveries, again after `readlink -f`, then copied into
the document cache (an allowlisted root) and validated like any host file.
No new tool; the existing `MEDIA:` tag is the interface.
Salvaged from #68506 by @tokou (design and denylist mirroring); redone on
current main without the send_file tool, the per-backend transports and
the undeliverable-notice plumbing (the #66797 failure notice already covers
that surface).
2026-09-05 16:09:46 +05:30
..
2026-09-04 00:15:16 -07:00
2026-09-05 16:09:46 +05:30
2026-09-02 22:36:16 -07:00
2026-09-04 02:12:35 -07:00
2026-09-02 22:36:16 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 13:49:57 -07:00
2026-09-03 13:49:57 -07:00
2026-09-03 13:49:57 -07:00
2026-09-03 13:49:57 -07:00
2026-09-03 13:49:57 -07:00
2026-09-03 13:49:57 -07:00
2026-09-03 13:49:57 -07:00
2026-09-04 00:15:16 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 17:13:22 -07:00
2026-09-02 22:36:16 -07:00
2026-09-02 22:36:16 -07:00
2026-09-02 22:36:15 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 09:44:26 -07:00
2026-09-02 22:47:50 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 14:16:54 -07:00
2026-09-03 14:16:54 -07:00
2026-09-04 00:15:16 -07:00
2026-09-03 13:49:57 -07:00
2026-09-03 14:16:54 -07:00
2026-09-02 22:47:50 -07:00
2026-09-02 22:47:50 -07:00
2026-09-04 00:15:16 -07:00
2026-09-03 14:16:54 -07:00
2026-09-03 14:25:33 -07:00
2026-09-03 14:16:54 -07:00
2026-09-03 14:16:54 -07:00
2026-09-03 14:16:54 -07:00
2026-09-03 14:16:54 -07:00
2026-09-03 14:16:54 -07:00
2026-09-03 14:16:54 -07:00
2026-09-03 14:16:54 -07:00
2026-09-03 14:16:54 -07:00
2026-09-03 14:16:54 -07:00
2026-09-04 00:15:16 -07:00
2026-09-04 08:30:32 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 09:44:26 -07:00
2026-09-04 00:15:16 -07:00
2026-09-02 22:36:16 -07:00
2026-09-03 13:24:04 -07:00
2026-09-02 23:08:22 -07:00
2026-09-04 00:15:16 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 13:24:04 -07:00
2026-09-02 22:36:16 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 14:00:59 -07:00
2026-09-03 09:44:26 -07:00
2026-09-04 00:15:16 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 00:10:18 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 13:49:57 -07:00
2026-09-03 09:44:26 -07:00
2026-09-02 19:43:56 -07:00
2026-09-02 19:59:16 -07:00
2026-09-03 09:44:26 -07:00
2026-09-02 19:43:56 -07:00
2026-09-04 00:15:16 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 00:10:18 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 13:24:04 -07:00
2026-09-03 17:13:22 -07:00
2026-09-02 22:30:06 -07:00
2026-09-04 00:15:16 -07:00
2026-09-03 17:13:22 -07:00
2026-09-02 22:48:08 -07:00
2026-09-03 03:31:03 -07:00
2026-09-03 13:33:47 -07:00
2026-09-03 13:10:52 -07:00
2026-09-04 00:15:16 -07:00
2026-09-03 13:28:22 -07:00
2026-09-03 13:10:52 -07:00
2026-09-03 13:30:27 -07:00
2026-09-03 13:30:27 -07:00
2026-09-04 00:15:16 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 13:53:03 -07:00
2026-09-02 22:50:57 -07:00
2026-09-02 21:52:25 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 13:24:04 -07:00
2026-09-02 22:06:11 -07:00
2026-09-03 14:00:59 -07:00
refactor(tools): first-wave simplification of tools/ (file ops split, lazy_deps, code_exec, approval, browser, delegate, mcp, skills, terminal, voice, media)
2026-09-02 14:43:45 -07:00
2026-09-03 13:48:14 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 00:11:01 -07:00
2026-09-03 02:24:06 +05:30
2026-09-03 09:44:26 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 13:28:47 -07:00
2026-09-02 23:56:55 -07:00
2026-09-03 13:28:47 -07:00
2026-09-03 13:28:47 -07:00
2026-09-03 13:28:47 -07:00
2026-09-03 13:28:47 -07:00
2026-09-03 13:28:47 -07:00
2026-09-03 13:28:47 -07:00
2026-09-03 13:28:47 -07:00
2026-09-03 13:28:47 -07:00
2026-09-03 13:28:47 -07:00
2026-09-03 13:49:57 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 13:28:47 -07:00
2026-09-03 13:28:47 -07:00
2026-09-04 00:15:16 -07:00
2026-09-03 09:44:26 -07:00
2026-09-04 00:15:16 -07:00
2026-09-03 01:43:42 -07:00
2026-09-04 00:15:16 -07:00
2026-09-02 22:59:19 -07:00
2026-09-04 00:15:16 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 13:10:52 -07:00
2026-09-04 00:15:16 -07:00
2026-09-02 23:56:07 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 09:44:26 -07:00
2026-09-04 00:15:16 -07:00
2026-09-03 17:13:22 -07:00
2026-09-04 00:15:16 -07:00
2026-09-03 17:13:22 -07:00
2026-09-04 00:15:16 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 13:28:22 -07:00
2026-09-03 13:49:57 -07:00
2026-09-03 13:12:50 -07:00
2026-09-03 01:36:04 -07:00
2026-09-04 00:15:16 -07:00
2026-09-03 13:46:50 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 01:41:16 -07:00
2026-09-03 17:13:22 -07:00
2026-09-04 08:15:22 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 13:33:47 -07:00
2026-09-04 08:15:22 -07:00
2026-09-03 00:55:09 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 00:55:09 -07:00
2026-09-03 17:13:22 -07:00
2026-09-02 21:42:18 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 13:22:48 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 13:22:48 -07:00
2026-09-03 13:22:48 -07:00
2026-09-02 21:42:18 -07:00
2026-09-02 21:42:18 -07:00
2026-09-04 00:15:16 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 00:05:14 -07:00
2026-09-02 23:53:08 -07:00
2026-09-04 00:15:16 -07:00
2026-09-03 13:27:01 -07:00
2026-09-04 00:15:16 -07:00
2026-09-03 01:09:55 -07:00
2026-09-03 13:27:01 -07:00
2026-09-03 01:09:55 -07:00
2026-09-04 00:15:16 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 01:09:12 -07:00
2026-09-03 09:44:26 -07:00
2026-09-02 22:37:39 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 13:24:04 -07:00
2026-09-02 20:20:12 -07:00
2026-09-02 20:33:08 -07:00
2026-09-03 03:31:03 -07:00
2026-09-03 13:24:04 -07:00
2026-09-03 13:24:04 -07:00
2026-09-03 13:49:57 -07:00
2026-09-04 00:15:16 -07:00
2026-09-02 22:37:39 -07:00
2026-09-02 23:53:08 -07:00
2026-09-03 01:13:51 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 01:13:51 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 01:13:51 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 13:17:25 -07:00
2026-09-03 13:17:25 -07:00
2026-09-03 13:17:25 -07:00
2026-09-03 13:30:31 -07:00
2026-09-03 13:17:25 -07:00
2026-09-04 00:15:16 -07:00
2026-09-03 13:20:22 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 01:23:19 -07:00
2026-09-03 13:20:22 -07:00
2026-09-03 01:17:43 -07:00
2026-09-03 13:20:22 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 13:20:22 -07:00
2026-09-04 00:15:16 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 09:44:26 -07:00
2026-09-02 23:28:33 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 13:17:25 -07:00
2026-09-03 13:30:31 -07:00
2026-09-04 00:15:16 -07:00
2026-09-03 13:24:36 -07:00
2026-09-03 13:24:36 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 13:08:53 -07:00
2026-09-03 13:08:53 -07:00
2026-09-03 13:33:47 -07:00
2026-09-04 07:17:00 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 00:10:38 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 00:27:38 -07:00
2026-09-03 17:13:22 -07:00