Commit Graph

1082 Commits

Author SHA1 Message Date
Alex Rosenzweig 4c9a383d84 fix: Use Python instead of Perl for SSH Proxy
Amp-Thread-ID: https://ampcode.com/threads/T-019c568b-10f8-712a-b3a9-ea029f071665
Co-authored-by: Amp <amp@ampcode.com>
2026-02-13 21:38:08 +11:00
Alex Rosenzweig d5e4bf4693 feat(sandbox): configurable macOS seatbelt sandbox with egress proxy
Adds a macOS sandbox for the goosed process using seatbelt (sandbox-exec)
and an HTTP CONNECT proxy for egress filtering. All outbound network
traffic from goosed is forced through a local proxy that enforces domain
blocking, IP restrictions, and SSH allowlisting.

## Sandbox profile (seatbelt)

The sandbox profile is built programmatically via buildSandboxProfile()
rather than a static template, ensuring it is always regenerated fresh
on each spawn and never becomes stale across app updates.

Configurable protections (all default to enabled):
- GOOSE_SANDBOX_PROTECT_FILES: write-protect ~/.ssh, shell configs
- GOOSE_SANDBOX_BLOCK_RAW_SOCKETS: deny SOCK_RAW on AF_INET/AF_INET6
- GOOSE_SANDBOX_BLOCK_TUNNELING: block nc, ncat, netcat, socat, telnet

Always-on protections:
- All network denied except localhost (forces proxy usage)
- Sandbox config and goose config are write-protected
- Kernel extension loading denied

## Egress proxy

An HTTP/CONNECT proxy runs in the Electron main process on 127.0.0.1.
The sandboxed process uses it via HTTP_PROXY/HTTPS_PROXY env vars.

Blocking layers checked in order:
1. Loopback detection (prevents proxy-as-relay bypass)
2. Raw IP address blocking (no domain = blocked)
3. Local blocklist (blocked.txt, live-reloaded via fs.watch)
4. SSH/Git host restriction (port 22/2222/7999)
5. LaunchDarkly egress-allowlist flag (optional, with configurable failover)

Configurable proxy options:
- GOOSE_SANDBOX_ALLOW_IP: allow raw IP connections (default: blocked)
- GOOSE_SANDBOX_BLOCK_LOOPBACK: block loopback relay via proxy (default: off)
- GOOSE_SANDBOX_ALLOW_SSH: enable/disable SSH (default: on)
- GOOSE_SANDBOX_GIT_HOSTS: custom git host allowlist for SSH
- GOOSE_SANDBOX_SSH_ALL_HOSTS: allow SSH to any host (default: off)
- GOOSE_SANDBOX_LD_FAILOVER: LaunchDarkly failover mode (allow|deny|blocklist)

## Other changes

- Startup now throws an error if GOOSE_SANDBOX=true but sandbox-exec is
  unavailable, instead of silently proceeding unsandboxed
- Domain normalization handles trailing dots, punycode, and IPv6 brackets
- Blocklist loaded once at startup and cached in memory with fs.watch
  for live reload (no per-request disk I/O)
- Proxy resources cleaned up on app quit
- Removed unused dns import and resolveIPToHostnames function
- Formatted with prettier

Co-authored-by: Amp <amp@ampcode.com>
Amp-Thread-ID: https://ampcode.com/threads/T-019c551f-ba60-709e-b293-5dedad8d243f
2026-02-13 16:29:58 +11:00
Michael Neale cba6c4fbf8 lint 2026-02-13 13:05:45 +11:00
Michael Neale 0b2963ee19 first pass at real sandboxing for macos 2026-02-13 12:28:09 +11:00
Zane d90fde19bd fix save and run recipe not working (#7186) 2026-02-12 11:52:39 -08:00
Zane 4cd39afbbe Upgraded npm packages for latest security updates (#7183) 2026-02-12 18:13:25 +00:00
Zane 2303e46e8d Improve error message logging from electron (#7130) 2026-02-12 16:59:02 +00:00
dependabot[bot] ac2a569868 chore(deps): bump jsonwebtoken from 9.3.1 to 10.3.0 (#6924)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: David Katz <dkatz@squareup.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 16:58:55 +00:00
Andrew Harvard a00c25c7b5 feat(apps): Integrate AppRenderer from @mcp-ui/client SDK (#7013) 2026-02-12 16:04:50 +00:00
Abhijay Jain 738f5f647c feat: reasoning_content in API for reasoning models (#6322)
Signed-off-by: Abhijay007 <Abhijay007j@gmail.com>
2026-02-12 15:18:44 +00:00
Lymah f96d38e382 Desktop: - No Custom Headers field for custom OpenAI-compatible providers (#6681)
Signed-off-by: Lymah123 <fimihanodunola625@gmail.com>
Co-authored-by: Zane Staggs <zane@squareup.com>
2026-02-12 00:20:56 +00:00
Abhijay Jain 153872a47c feat: edit model and extensions of a recipe from GUI (#6804)
Signed-off-by: Abhijay007 <Abhijay007j@gmail.com>
2026-02-11 23:48:39 +00:00
Abhijay Jain cfa2778b4d feat: load provider/model specified inside the recipe config (#6884)
Signed-off-by: Abhijay007 <Abhijay007j@gmail.com>
Co-authored-by: Zane Staggs <zane@squareup.com>
2026-02-11 13:26:00 -08:00
BestCodes 947c17daf8 fix flatpak icon (#7154)
Signed-off-by: The-Best-Codes <106822363+The-Best-Codes@users.noreply.github.com>
2026-02-11 19:22:43 +00:00
Josh Soref f636a97faa Spelling (#7137)
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
2026-02-11 14:35:24 +00:00
Andrew Harvard 544bc1bc4f feat(mcp): upgrade rmcp to 0.15.0 and advertise MCP Apps UI extension capability (#6927) 2026-02-11 14:34:04 +00:00
Abhijay Jain 4571c3a41c refactor: updated elevenLabs API module and remove button UX (#6781)
Signed-off-by: Abhijay007 <Abhijay007j@gmail.com>
2026-02-11 10:57:51 +00:00
Zane 45e84f9968 fix extension selector syncing issues (#7133) 2026-02-11 01:06:25 +00:00
Douwe Osinga 426f8e0a07 Inline worklet source (#7128)
Co-authored-by: Douwe Osinga <douwe@squareup.com>
2026-02-10 22:32:20 +00:00
Zane 7267621ab8 fix: strip empty extensions array when deeplink also (#7096) 2026-02-10 16:47:19 +00:00
github-actions[bot] d6e8ecbaa6 fix: Goose Desktop missing Calendar and Reminders entitlements (#7100)
Co-authored-by: blackgirlbytes <22990146+blackgirlbytes@users.noreply.github.com>
Co-authored-by: Rizel Scarlett <rizel@squareup.com>
2026-02-10 01:48:03 +00:00
Bright Zheng 17dff138cc Fix 'Edit In Place' and 'Fork Session' features (#6970)
Signed-off-by: Bright Zheng <bright@squareup.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: Zane Staggs <zane@squareup.com>
2026-02-09 22:29:34 +00:00
tfsq 94895a8938 fix: improve text-muted contrast for better readability (#7095) 2026-02-09 18:10:16 +00:00
Zane 320f22b231 Always sync bundled extensions (#7057) 2026-02-09 17:15:56 +00:00
Lifei Zhou 021233c419 fix: switch to windows msvc (#7080) 2026-02-09 14:04:10 +00:00
Douwe Osinga 7779457087 Use goose port (#7089)
Co-authored-by: Douwe Osinga <douwe@squareup.com>
2026-02-09 12:52:16 +00:00
Zane 4dc1fbedd0 fix: ensure animated elements are visible when prefers-reduced-motion is enabled (#7047) 2026-02-06 19:27:08 +00:00
tfsq 459ae33df5 feat(ui): add session content search via API (#7050) 2026-02-06 19:21:08 +00:00
David Katz 0853e9fc11 Desktop UI for deleting custom providers (#7042) 2026-02-06 19:15:17 +00:00
tulsi b1feead405 feat(ui): add inline rename for chat sessions in sidebar (#6995)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 16:09:43 +01:00
kdunn926 969ea53302 fix: handle toolnames without underscores (#7015)
Signed-off-by: Kyle Dunn <kdunn926@gmail.com>
2026-02-06 14:58:05 +00:00
Abhijay Jain edde10ab7c fix(ui): keep Hub chat input from overlapping SessionInsights on paste (#6719)
Signed-off-by: Abhijay007 <Abhijay007j@gmail.com>
Co-authored-by: Zane Staggs <zane@squareup.com>
2026-02-05 23:58:46 +00:00
Douwe Osinga 589f7c8279 Clean up css (#6944)
Co-authored-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-05 23:07:20 +00:00
dependabot[bot] c79cd2560e chore(deps-dev): bump webpack from 5.102.1 to 5.105.0 in /ui/desktop (#6996)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-05 20:05:06 +00:00
Douwe Osinga d78c69f944 Proper proxy support on windows & mac (#6840)
Co-authored-by: Douwe Osinga <douwe@squareup.com>
2026-02-05 19:02:31 +00:00
Douwe Osinga 24b3e0228c Ask separately for confirmation (#6949)
Co-authored-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-05 16:57:24 +00:00
Rabi Mishra 06e8b85907 feat(google): add configurable thinking level for Gemini 3 models (#6585)
Signed-off-by: rabi <ramishra@redhat.com>
2026-02-05 15:47:03 +00:00
Sheikh Limon bca26dd88d fix: correct Tailwind @source paths for tarball builds (#6978)
Signed-off-by: sheikhlimon <sheikhlimon404@gmail.com>
2026-02-05 15:33:57 +00:00
Zane 5fc21ce094 custom provider form minor improvements (#6966) 2026-02-05 00:03:44 +00:00
Bright Zheng 950f1412ab Fix 'Edit In Place' feature appending instead of editing messages (#6955)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Zane Staggs <zane@squareup.com>
2026-02-04 22:03:24 +00:00
Andrew Harvard 2b90c2c310 feat(mcp-apps): add Permission Policy support for sandbox iframes (#6947) 2026-02-04 16:52:11 +00:00
Zane d8d9bb741b fix tool confirmations not showing up mid chat (#6935) 2026-02-04 15:37:21 +00:00
Rabi Mishra 1e645c0212 feat: display subagent tool calls in CLI and UI (#6535)
Signed-off-by: rabi <ramishra@redhat.com>
2026-02-03 20:56:59 +00:00
github-actions[bot] 7ee634eaa7 chore(release): release version 1.23.0 (minor) (#6906)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-03 20:43:47 +00:00
Zane aa356bd460 fix: per session working dir isolation (#6920) 2026-02-03 18:20:02 +00:00
Elias Posen 8631caa890 Use Port of Context (pctx) for code mode (#6765)
Signed-off-by: Elias Posen <elias@posen.ch>
Signed-off-by: Adrian Cole <adrian@tetrate.io>
Co-authored-by: Adrian Cole <adrian@tetrate.io>
2026-02-03 12:15:49 -05:00
Zane 1f95f07065 Dont show new chat placeholders for recipes in sidebar (#6790) 2026-02-03 08:36:05 -08:00
Zane efaf2a6cfb fix session history cards title wrapping early (#6854) 2026-02-03 16:11:55 +00:00
Sheikh Limon 578dc5a88d fix: broken Tailwind scan in tarball releases (#6917)
Signed-off-by: sheikhlimon <sheikhlimon404@gmail.com>
2026-02-03 16:11:12 +00:00
Zane 5c259e09a4 fix deep links not working in markdown (#6907) 2026-02-03 07:51:42 -08:00