Commit Graph

3545 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
dependabot[bot] ae98e503ff chore(deps): bump qs from 6.14.1 to 6.14.2 in /documentation (#7191)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-13 00:04:01 +00:00
jh-block a1a3f9a6f6 Switch jsonwebtoken to use aws-lc-rs (already used by rustls) (#7189) 2026-02-12 22:26:38 +00:00
dependabot[bot] d4835cfb1e chore(deps): bump qs from 6.14.1 to 6.14.2 in /evals/open-model-gym/mcp-harness (#7184)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-12 19:48:07 +00:00
tlongwell-block 60e782c424 Add SLSA build provenance attestations to release workflows (#7097) 2026-02-12 20:54:23 +01: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
bruwbird dd98e8757b docs: reasoning effort levels for Codex provider (#6798)
Signed-off-by: Yusuke Shimizu <stm1051212@gmail.com>
2026-02-12 17:59:44 +00:00
Douwe Osinga d2158fa3b4 Fix speech local (#7181)
Co-authored-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-12 18:43:12 +01:00
Matt Joyce b4ca01d2d7 chore: add .gooseignore to .gitignore (#6826)
Signed-off-by: matt joyce <matt.joyce@gmail.com>
2026-02-12 17:01:00 +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
dianed-square af15242b57 docs: standalone mcp apps and apps extension (#6791)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-12 16:25:35 +00:00
dianed-square b90484297c workflow: auto-update cli-commands on release (#6755) 2026-02-12 16:23:47 +00:00
Andrew Harvard a00c25c7b5 feat(apps): Integrate AppRenderer from @mcp-ui/client SDK (#7013) 2026-02-12 16:04:50 +00:00
Alex Hancock 5d939674be fix(MCP): decode resource content (#7155) 2026-02-12 15:57:03 +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
Sahil Bhatt d1aa571871 Fix/configure add provider custom headers (#7157)
Signed-off-by: Sahil8383 <sahilbhatt915@gmail.com>
2026-02-12 14:23:46 +00:00
Sheikh Limon c059569590 fix: handle keyring fallback as success (#7177)
Signed-off-by: sheikhlimon <sheikhlimon404@gmail.com>
2026-02-12 13:56:08 +00:00
jh-block 41c111575e Update process-wrap to 9.0.3 (9.0.2 is yanked) (#7176) 2026-02-12 13:34:53 +00:00
Brandon Kvarda 5c17964784 feat: support extra field in chatcompletion tool_calls for gemini openai compat (#6184)
Signed-off-by: Brandon Kvarda <brandon.kvarda@databricks.com>
Co-authored-by: Brandon Kvarda <brandon.kvarda@databricks.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-12 11:48:05 +00:00
Chujiang a82a1d7def fix: replace panic with proper error handling in get_tokenizer (#7175)
Signed-off-by: hobostay <110hqc@gmail.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-12 11:05:03 +00:00
Lifei Zhou 0e11d18478 Lifei/smoke test for developer (#7174) 2026-02-12 10:12:11 +00:00
David Katz ac0ceddf88 fix text editor view broken (#7167) 2026-02-12 07:11:03 +00:00
Manik Surtani ffc2471d5a docs: White label guide (#6857)
Co-authored-by: Michael Neale <michael.neale@gmail.com>
Co-authored-by: angiejones <jones.angie@gmail.com>
2026-02-12 02:43:18 +00:00
Jack Amadeo 5c4bfe9cbb Add PATH detection back to developer extension (#7161) 2026-02-12 01:52:16 +00:00
dianed-square 7f0af1be52 docs: pin version in ci/cd (#7168) 2026-02-12 01:24:37 +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
Adrian Cole 8d59c2dced feat: MCP support for agentic CLI providers (#6972)
Signed-off-by: Adrian Cole <adrian@tetrate.io>
2026-02-11 23:37:52 +00:00
dianed-square c6e27b8f84 docs: keyring fallback to secrets.yaml (#7165) 2026-02-11 22:29:28 +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 030cea68fa fix ask-ai bot hitting tool call limits (#7162)
Signed-off-by: The-Best-Codes <106822363+The-Best-Codes@users.noreply.github.com>
2026-02-11 20:32:57 +00: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
Ebony Louis 566e110ae2 [docs] Skills Marketplace UI Improvements (#7158) 2026-02-11 18:04:46 +00:00
Jack Amadeo fb47728f1b More no-window flags (#7122) 2026-02-11 17:43:18 +00:00
Eckhart Köppen 1aacd56225 feat: Allow overriding default bat themes using environment variables (#7140)
Signed-off-by: Eckhart Köppen <eck@40hz.org>
2026-02-11 18:09:13 +01:00
Douwe Osinga 12a346fec1 Make the system prompt smaller (#6991)
Co-authored-by: Douwe Osinga <douwe@squareup.com>
2026-02-11 15:48:49 +00:00
Douwe Osinga 799319be48 Pre release script (#7145)
Co-authored-by: Douwe Osinga <douwe@squareup.com>
2026-02-11 15:48:23 +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
fl-sean03 0e7294835c fix: ensure assistant messages with tool_calls include content field (#7076)
Signed-off-by: fl-sean03 <sean@opspawn.com>
Co-authored-by: fl-sean03 <sean@opspawn.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: OpSpawn <opspawn@users.noreply.github.com>
2026-02-11 14:15:23 +00:00
Rabi Mishra 7be6fc93e8 fix(canonical): handle gcp_vertex_ai model mapping correctly (#6836)
Signed-off-by: rabi <ramishra@redhat.com>
2026-02-11 14:11:04 +00:00
Rodolfo Olivieri 845577726d Group dependencies in root Cargo.toml (#6948)
Signed-off-by: Rodolfo Olivieri <rodolfo.olivieri3@gmail.com>
2026-02-11 14:10:09 +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
Michael Neale d138c88d8d fix: we were missing content from langfuse traces (#7135) 2026-02-11 02:40:17 +00:00
Tania 56c0ac9806 docs: update username in authors.yml (#7132)
Co-authored-by: Tania Chakraborty <tchakraborty@block.xyz>
2026-02-11 01:46:45 +00:00