You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 5e2be25
Browse filesBrowse the repository at this point in the historyBrowse files
ShadowCode 0.30.0: Antigravity through Google's official ACP agent server
- Antigravity now runs on agy_acp_server.par (ACP registry
`antigravity-acp` 1.2.1) instead of `agy --print`, which auto-denied every
tool. It sends session/request_permission, so ShadowCode's approvals apply;
it accepts images and resumes with session/load. Models come from the
session's `model` config option (session/set_config_option). Questions it
sends through the permission method are skipped with a note.
- Install from Settings > Accounts: 334 MB from dl.google.com, pinned size and
SHA-256, built-in unzip (flate2), managed copy under
~/.local/share/shadowcode/antigravity-acp/1.2.1, removable.
- Private GEMINI_HOME profile with file-based token storage. Connect runs the
server's `authenticate` (oauth-personal) and relays the Google link;
Disconnect deletes the profile. Status checks and tasks set BROWSER=true and
treat a printed sign-in link as "Sign in" (tasks stop at once).
- Per-launch TMPDIR, removed afterwards; Google API-key and cloud-project
variables removed; --enforce_kernel_ipv6_support=false on hosts without ::1.
- Accounts UI: install dialog with size, host and folder, progress, retry,
remove; picker setup rows open the Antigravity card.
- Tests: fake ACP server end to end (sign-in detection, Connect, models, a
task, temp cleanup, Disconnect), adapter protocol test, opt-in live install.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
`./ShadowCode_0.29.0_amd64.AppImage --appimage-extract-and-run`. FUSE is not
68
+
`./ShadowCode_0.30.0_amd64.AppImage --appimage-extract-and-run`. FUSE is not
69
69
required.
70
70
71
71
### Debian package
72
72
73
73
```bash
74
74
sha256sum --ignore-missing -c SHA256SUMS
75
-
sudo apt install ./ShadowCode_0.29.0_amd64.deb
75
+
sudo apt install ./ShadowCode_0.30.0_amd64.deb
76
76
```
77
77
78
78
The deb installs `shadowcode` and the same llama.cpp runtime in
@@ -130,7 +130,7 @@ for that vendor.
130
130
| Codex |`codex app-server` (JSON-RPC) |`codex login`| app-server `model/list`| Yes (`localImage`), per model | Yes: command and file-change requests. Codex runs in its own sandbox (`workspace-write`, or `read-only` for Plan/Review) | Rate-limit windows per quota pool (for example 5-hour and weekly), reset times, plan, and credits only when reported |
131
131
| Claude Code |`claude -p --output-format stream-json --input-format stream-json --permission-prompts host`|`claude auth login`|*Default* plus the aliases listed in `claude --help`| Yes (image blocks) | Yes, through `--permission-prompts host`. Claude's own settings can pre-approve tools without asking |*Usage unavailable*: Claude Code exposes no plan usage to other apps |
132
132
| Cursor |`cursor-agent acp` (Agent Client Protocol) |`cursor-agent login`| ACP session models, with exact IDs | When ACP `initialize` advertises image support | Yes, through ACP permission requests |*Usage unavailable*: Cursor reports its plan tier, not the remaining allowance |
133
-
| Antigravity |`agy --output-format stream-json --input-format stream-json --print=`| Not available from ShadowCode: run `agy` once to sign in |`agy models`| No (text-only input) |**No**: Antigravity applies its own permission settings in headless mode |*Usage unavailable*: usage appears only in `agy`'s interactive `/usage` panel|
133
+
| Antigravity |Google's ACP agent server `agy_acp_server.par` (installed from Accounts) | Google sign-in through the server's `authenticate`| The `model` config option of the ACP session | Yes (ACP image support) |Yes, through ACP permission requests |*Usage unavailable*: the server reports no plan usage |
134
134
| Grok |`grok agent stdio` (ACP) |`grok login`| ACP session models (falls back to `grok models`) | No: ACP reports `image: false`| Yes, through ACP. Grok has no read-only mode, so Plan/Review is not enforced by Grok |*Usage unavailable*: Grok reports per-session tokens only |
135
135
136
136
-**API keys are never used.** Vendor CLIs start with provider API-key
ShadowCode names itself in its user agent and never works around a bot
99
102
check.
100
103
104
+
## Antigravity agent download
105
+
106
+
The Antigravity agent server is downloaded only when you choose **Install**,
107
+
from the URL in the ACP registry (`dl.google.com`). ShadowCode refuses it
108
+
unless its size and SHA-256 match the values pinned in the release, unpacks
109
+
only plain file names from the archive, and starts it without Google API-key
110
+
or cloud-project variables.
111
+
101
112
## OpenRouter API key
102
113
103
114
The key is checked with OpenRouter's `GET /api/v1/key`, then stored in the
@@ -135,7 +146,7 @@ What each vendor runtime enforces (from `permissions.rs`, shown in
135
146
| Claude Code | Permission prompts come to ShadowCode (`--permission-prompts host`). Plan/Review uses `--permission-mode plan`. Claude's own settings can pre-approve tools that ShadowCode never sees |
136
147
| Cursor | ACP permission requests come to ShadowCode. Plan/Review uses Cursor's plan mode when offered |
137
148
| Grok | ACP permission requests come to ShadowCode. Grok has no read-only mode, so Plan/Review is not enforced by Grok |
138
-
| Antigravity |Never asks ShadowCode. It applies its own settings (`~/.gemini/antigravity-cli/settings.json`) and soft-denies actions it may not run. Plan/Review uses `--mode plan`|
149
+
| Antigravity |Asks through ACP `session/request_permission`, like Cursor and Grok. In Plan/Review ShadowCode denies its requests|
139
150
140
151
In read-only tasks, ShadowCode denies vendor approval requests automatically.
141
152
Unanswered vendor requests are denied after `approval_timeout_sec` (600 s by
| Antigravity |`agy`|[Antigravity CLI](https://antigravity.google/docs/cli/install/) (the `antigravity` desktop app is not the CLI) | Run `agy` once in a terminal. ShadowCode can't start this sign-in|
20
+
| Antigravity |`agy_acp_server.par` (Google's ACP agent server) |**Install** in **Settings › Accounts** downloads Google's official agent server (334 MB from dl.google.com, checked against a pinned SHA-256) |**Connect** signs in with Google in the browser|
| Sign-in check | app-server `account/read` (falls back to `codex login status`) |`claude auth status`| ACP `initialize` → `authenticate` → `session/new`|`agy models`| ACP handshake (falls back to `grok models`) |
47
-
| Models | app-server `model/list`|*Default* plus the aliases (`fable`, `opus`, `sonnet`, `haiku`) that the installed `claude --help` lists | ACP session models. Exact IDs, including bracketed parameters, set with `session/set_model`. *Auto* is Cursor's own router |`agy models`| ACP session models |
48
-
| Image input | Yes (`localImage`), for models that accept images | Yes (base64 image blocks) | When ACP `initialize` reports image support |No: text blocks only, and images are refused before sending| No: ACP reports `image: false`|
49
-
| Approvals reach ShadowCode | Yes: command and file-change requests | Yes: `can_use_tool` control requests | Yes: `session/request_permission`|**No**: its own settings decide, and refusals are reported afterwards| Yes: `session/request_permission`|
50
-
| Plan/Review (read-only) |`sandbox: read-only`|`--permission-mode plan`| ACP mode `plan`, when offered |`--mode plan`| Not enforced by Grok |
| Sign-in check | app-server `account/read` (falls back to `codex login status`) |`claude auth status`| ACP `initialize` → `authenticate` → `session/new`|ACP `initialize` → `authenticate` (`oauth-personal`) → `session/new`; a printed Google sign-in link means *Sign in*| ACP handshake (falls back to `grok models`) |
72
+
| Models | app-server `model/list`|*Default* plus the aliases (`fable`, `opus`, `sonnet`, `haiku`) that the installed `claude --help` lists | ACP session models. Exact IDs, including bracketed parameters, set with `session/set_model`. *Auto* is Cursor's own router |The `model` option of `session/new`'s `configOptions`, set with `session/set_config_option`| ACP session models |
73
+
| Image input | Yes (`localImage`), for models that accept images | Yes (base64 image blocks) | When ACP `initialize` reports image support |Yes: ACP `initialize` reports image support| No: ACP reports `image: false`|
74
+
| Approvals reach ShadowCode | Yes: command and file-change requests | Yes: `can_use_tool` control requests | Yes: `session/request_permission`|Yes: `session/request_permission` (questions it asks are skipped with a note)| Yes: `session/request_permission`|
75
+
| Plan/Review (read-only) |`sandbox: read-only`|`--permission-mode plan`| ACP mode `plan`, when offered |ShadowCode denies its requests| Not enforced by Grok |
0 commit comments