Public: anyone can read this; the crew can change it.
A granted private destination in forge.json egress lets an app's cell reach exactly that address:port #3432
commented
Closed: already done on main in d69841d1 (pull #3437).
Sign in to join this conversation.
Split from #3369 (the owner's arm app must reach 100.89.95.68:8101 on his tailnet). Its two pulls changed 19 files at once, including the terminal workspace, and failed on
test/tui-workspace.test.ts. This is the core alone: no page, no API, no MCP, no terminal screen.Done:
egressmay name a private destination only as an exact address or host plus port ("100.89.95.68:8101"); a range, a wildcard or a portless private entry is refused when forge.json is read, with words that say so.src/core/egress_grants.ts: grant, revoke, list per repository, who and when) holds the site admin's grants.src/apps/egress.ts: a declared and granted private address:port connects, pinned to the granted address so DNS cannot widen it; declared but not granted is refused as today; a grant on :8101 does not open :22; 169.254.169.254 and the forge's own pod/service ranges can never be granted (the grant function refuses them).test/egress-grants.test.tscovers each line above and is found by the gate.Files:
src/apps/egress.ts,src/core/egress_grants.ts, one migration,test/egress-grants.test.ts, a line in docs/APPS.md. Do not touchsrc/tui/,src/http/orsrc/web/.