Skip to content

Commit 5c22580

Browse files
Release 0.24.0: version bump, changelog, and vendor CLI docs
Bump crates, Cargo.lock, Tauri, UI package, Python package, desktop entry, README and release notes to 0.24.0. Document that ShadowCode holds no vendor credentials and that Anthropic forbids third-party Pro/Max OAuth use. Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent 0046a45 commit 5c22580

16 files changed

Lines changed: 171 additions & 20 deletions

‎CHANGELOG.md‎

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,21 @@
11
# Changelog
22

3+
## 0.24.0
4+
5+
- Vendor CLI agent backends: spawn the official Claude, Codex, or Grok CLI in a
6+
trusted workspace. ShadowCode never reads, stores, or proxies vendor OAuth
7+
tokens. Login remains `claude auth login`, `codex login`, and `grok login`.
8+
- Codex uses `codex app-server` JSON-RPC, with `codex exec --json` only when
9+
app-server is unavailable. Grok uses ACP (`grok agent stdio`). Claude uses
10+
headless stream-json. Vendor tools and sandbox stay with the vendor; Pause
11+
and Steer interrupt and follow up. Rewind does not apply.
12+
- Doctor reports not installed / not logged in / ready without printing
13+
credentials. The model picker groups local vs vendor agents; knobs live in
14+
Settings → Advanced, including a Claude adapter disable flag.
15+
- Anthropic policy note: third-party clients may not use Pro/Max OAuth tokens
16+
directly (enforced 2026); driving the official `claude` binary with the
17+
user's login is currently tolerated but not guaranteed.
18+
319
## 0.23.0
420

521
- Verification gate: the last test/build/lint command decides. A deliberately

‎Cargo.lock‎

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎Cargo.toml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ default-members = ["native/core"]
44
resolver = "2"
55

66
[workspace.package]
7-
version = "0.23.0"
7+
version = "0.24.0"
88
edition = "2021"
99
rust-version = "1.95"
1010
license = "MIT"

‎README.md‎

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# ShadowCode
22

3-
![version](https://img.shields.io/badge/version-0.23.0-386c51) ![Rust](https://img.shields.io/badge/runtime-Rust%201.95-orange) ![license](https://img.shields.io/badge/license-MIT-green)
3+
![version](https://img.shields.io/badge/version-0.24.0-386c51) ![Rust](https://img.shields.io/badge/runtime-Rust%201.95-orange) ![license](https://img.shields.io/badge/license-MIT-green)
44

55
**Your ideas. Your models. Your machine.**
66

@@ -10,7 +10,7 @@ context, tools, permissions, checkpoints, plans, and verification.
1010

1111
![ShadowCode workspace](docs/images/workspace-light.png)
1212

13-
**Native 0.23 release:** the `main` branch builds a Rust/Tauri desktop window
13+
**Native 0.24 release:** the `main` branch builds a Rust/Tauri desktop window
1414
with the interface embedded in the executable. It needs no Python runtime or
1515
browser launcher. See the [native desktop guide](docs/NATIVE_DESKTOP.md)
1616
and the [goals](docs/NATIVE_GOALS.md) and [model routing](docs/NATIVE_ROUTING.md)
@@ -25,6 +25,7 @@ workflows, [managed background processes and model tools](docs/NATIVE_BACKGROUND
2525
[approved MCP stdio and HTTP tools](docs/NATIVE_MCP.md), a
2626
[native MCP stdio and authenticated HTTP server](docs/NATIVE_MCP.md#connect-another-coding-tool-to-shadowcode)
2727
with Codex/Claude Code/Cursor registration output, and a
28+
[vendor Claude / Codex / Grok CLI backends](docs/NATIVE_CLI_BACKENDS.md),
2829
[native CLI](docs/NATIVE_CLI.md) and [terminal interface](docs/NATIVE_TUI.md)
2930
that share the active desktop engine or run headlessly with their own profile.
3031
The [native desktop can also attach](docs/NATIVE_DESKTOP.md#attaching-to-a-running-engine)
@@ -35,16 +36,16 @@ Integrations and release checks are tracked under the [release gates](docs/NATIV
3536

3637
## Native AppImage
3738

38-
Download the `v0.23.0` **x86_64 AppImage**
39+
Download the `v0.24.0` **x86_64 AppImage**
3940
and its `SHA256SUMS` file from [GitHub releases](https://github.com/Shadowfetchapps/ShadowCode/releases/latest).
4041
The native application embeds its interface; Python, Node.js and a browser
4142
launcher are not runtime dependencies. The release targets **Ubuntu 24.04 or
4243
newer / glibc 2.39+**. Git and a model provider such as Ollama remain external.
4344

4445
```bash
4546
sha256sum --ignore-missing -c SHA256SUMS
46-
chmod +x ShadowCode_0.23.0_amd64.AppImage
47-
./ShadowCode_0.23.0_amd64.AppImage --appimage-extract-and-run
47+
chmod +x ShadowCode_0.24.0_amd64.AppImage
48+
./ShadowCode_0.24.0_amd64.AppImage --appimage-extract-and-run
4849
```
4950

5051
Extraction mode works without FUSE. To install into `~/Applications`, add a
@@ -53,14 +54,20 @@ stable `shadow` and `shadowcode` commands, and replace the desktop launcher:
5354
```bash
5455
git clone https://github.com/Shadowfetchapps/ShadowCode.git
5556
cd ShadowCode
56-
./scripts/install-appimage.sh /path/to/ShadowCode_0.23.0_amd64.AppImage
57+
./scripts/install-appimage.sh /path/to/ShadowCode_0.24.0_amd64.AppImage
5758
```
5859

5960
Keep `SHA256SUMS` beside the download and the installer verifies its matching
6061
entry automatically. It replaces older ShadowCode AppImages only after the new
6162
executable starts, preserves settings, keys, memory and task history, and refuses
6263
a changed download before it can alter the installed application.
6364

65+
## Native 0.24 highlights
66+
67+
- **Vendor CLI agents.** Run Claude, Codex, or Grok by spawning the official
68+
CLI. ShadowCode never reads those OAuth tokens. See
69+
[vendor CLI backends](docs/NATIVE_CLI_BACKENDS.md).
70+
6471
## Native 0.23 highlights
6572

6673
- **A focused workspace.** Persistent projects and tasks, search, pinned tasks,

‎SECURITY.md‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,14 @@ Protect the user account and filesystem accordingly. The configured model
115115
provider receives the task context sent by the harness. Cloud providers may
116116
therefore receive project content; local providers keep inference on the machine.
117117

118+
Vendor CLI backends (Claude, Codex, Grok) spawn the official CLI after the user
119+
logs in with that vendor. ShadowCode holds no vendor credentials and never
120+
reads `~/.codex/auth.json`, `~/.grok/auth.json`, or Claude credential files.
121+
Anthropic forbids third-party clients from using Pro/Max OAuth tokens directly
122+
(enforced 2026); driving the official `claude` binary with the user's own login
123+
is currently tolerated but not guaranteed. See
124+
[vendor CLI backends](docs/NATIVE_CLI_BACKENDS.md).
125+
118126
The UI renders Markdown without executing raw HTML. It does not automatically
119127
load remote images embedded in model responses. Only fragment links and
120128
absolute `http`/`https` URLs without embedded credentials stay clickable;

‎docs/NATIVE_CLI_BACKENDS.md‎

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
# Vendor CLI agent backends
2+
3+
ShadowCode can run a coding task by spawning the official Claude, Codex, or
4+
Grok CLI in a trusted workspace. In this mode the **vendor agent** owns the
5+
loop, its tools, and its sandbox. ShadowCode is the workspace, transcript,
6+
review, approval, and steering shell.
7+
8+
This is distinct from a **local model (ShadowCode agent)**, where ShadowCode
9+
calls an OpenAI-compatible or Ollama HTTP API and injects its own tools.
10+
11+
ShadowCode **never** reads, stores, proxies, or re-implements vendor OAuth
12+
tokens. Login is always:
13+
14+
| Vendor | Login |
15+
| --- | --- |
16+
| Codex | `codex login` |
17+
| Grok | `grok login` |
18+
| Claude | `claude auth login` |
19+
20+
Doctor only checks that the binary is on `PATH` and that a login *marker*
21+
exists (`~/.codex/auth.json`, `~/.grok/auth.json`, `~/.claude/.credentials.json`,
22+
or `claude auth status --json` → `loggedIn`). Credential contents are never
23+
opened, logged, or shown.
24+
25+
## Adapters
26+
27+
### Codex
28+
29+
Primary: `codex app-server` — JSON-RPC 2.0 over stdio (`initialize` →
30+
`thread/start` → `turn/start`, streamed `item/*` notifications, approval
31+
requests such as `item/commandExecution/requestApproval`).
32+
33+
Fallback: `codex exec --json` only when `app-server` is unavailable (unknown
34+
subcommand or missing help). Exec has no approval channel.
35+
36+
References: [OpenAI Codex docs](https://developers.openai.com/codex),
37+
[openai/codex](https://github.com/openai/codex), and the T3 Code provider
38+
notes at
39+
[docs/internals/providers.md](https://github.com/pingdotgg/t3code/blob/main/docs/internals/providers.md).
40+
41+
### Grok
42+
43+
`grok agent stdio` speaks the [Agent Client Protocol](https://agentclientprotocol.com)
44+
(JSON-RPC over stdio). ShadowCode declares no `fs` / `terminal` client
45+
capabilities, so Grok performs its own I/O. See [xAI build docs](https://docs.x.ai/build).
46+
47+
### Claude
48+
49+
`claude -p --output-format stream-json --input-format stream-json --verbose --include-partial-messages --permission-prompts host`
50+
([Claude Code headless](https://code.claude.com/docs/en/headless)).
51+
Permission prompts become ShadowCode Allow/Deny cards.
52+
53+
**Policy:** Anthropic forbids third-party clients from using Pro/Max OAuth
54+
tokens directly (enforced 2026). Driving the official `claude` binary with the
55+
user's own login is currently tolerated but not guaranteed. Settings → Advanced
56+
has `cli_agents.claude_enabled` to disable the adapter.
57+
58+
## What ShadowCode does and does not do
59+
60+
- Maps vendor text, tool start/finish, file-change reports, results, and errors
61+
into the existing transcript.
62+
- Routes vendor permission prompts through the existing Allow/Deny flow.
63+
- Cancels by killing the child **process group**.
64+
- Applies the same redaction used for ShadowCode tool output.
65+
- Does **not** inject ShadowCode tools or bubblewrap into the vendor process.
66+
- **Pause / Steer** = interrupt the vendor turn (where the protocol supports it)
67+
and send a follow-up prompt on Resume.
68+
- **Rewind does not apply.** Vendor CLIs write files with their own tools;
69+
ShadowCode file-tool checkpoints do not cover those edits. Use Git or the
70+
vendor CLI to undo.
71+
72+
## Doctor states
73+
74+
Each vendor reports one of:
75+
76+
- `not_installed` — binary not on `PATH`
77+
- `not_logged_in` — installed, no login marker
78+
- `ready` — installed and login detected
79+
- `disabled` — turned off in Settings → Advanced
80+
81+
## Settings
82+
83+
Knobs live only in **Settings → Advanced**:
84+
85+
- Enable vendor CLI backends
86+
- Enable Claude adapter
87+
- Binary names/paths
88+
- Approval and stall timeouts
89+
90+
The composer model picker lists vendor backends under
91+
**Claude / Codex / Grok (vendor agent)** and local HTTP models under
92+
**Local model (ShadowCode agent)**. A Doctor status chip shows the three
93+
install/login states.

‎docs/NATIVE_DESKTOP.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,8 @@ From the repository root, build both package formats with:
140140
```sh
141141
node scripts/build-native.mjs
142142
node scripts/check-native-package.mjs \
143-
target/release/bundle/appimage/ShadowCode_0.23.0_amd64.AppImage \
144-
target/release/bundle/deb/ShadowCode_0.23.0_amd64.deb
143+
target/release/bundle/appimage/ShadowCode_0.24.0_amd64.AppImage \
144+
target/release/bundle/deb/ShadowCode_0.24.0_amd64.deb
145145
node scripts/test-native-runtime.mjs
146146
node --test scripts/test-native-source-fetch.mjs
147147
node scripts/test-native-runtime-sources.mjs

‎docs/RELEASE_NOTES.md‎

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,23 @@
1+
ShadowCode 0.24.0 adds vendor CLI agent backends. You can run Claude, Codex, or
2+
Grok subscriptions by spawning the official CLI. ShadowCode never reads or
3+
stores those OAuth tokens.
4+
5+
- **Codex:** `codex app-server` JSON-RPC, falling back to `codex exec --json`
6+
only when app-server is unavailable.
7+
- **Grok:** `grok agent stdio` (Agent Client Protocol).
8+
- **Claude:** headless stream-json. Anthropic forbids third-party use of
9+
Pro/Max OAuth tokens directly (enforced 2026); the official binary with the
10+
user's own login is currently tolerated but not guaranteed.
11+
- Doctor, picker, and Settings → Advanced knobs. Rewind does not apply to
12+
vendor-agent tasks.
13+
14+
Downloads: `ShadowCode_0.24.0_amd64.AppImage`, `ShadowCode_0.24.0_amd64.deb`,
15+
the AppImage runtime source archive, and `SHA256SUMS`. Binaries target x86_64,
16+
Ubuntu 24.04+ / glibc 2.39+. Git and model providers such as Ollama remain
17+
external. Vendor CLIs are optional and are never bundled.
18+
19+
---
20+
121
ShadowCode 0.23.0 hardens the verification gate, live steering and parallel
222
workspace recovery. The Rust/Tauri app embeds its interface and needs no Python
323
or Node runtime.

‎docs/RELEASING.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
# Native release procedure
22

3-
This procedure publishes the Rust/Tauri 0.23 application. The tag workflow is
3+
This procedure publishes the Rust/Tauri 0.24 application. The tag workflow is
44
the release authority: it does not build, upload, or mention the legacy Python
55
wheel, source distribution, portable archive, or browser launcher.
66

77
## Prepare the release
88

99
1. Update the shared version in `Cargo.toml` and `src-tauri/tauri.conf.json`.
10-
They must match the tag exactly, for example `v0.23.0`.
10+
They must match the tag exactly, for example `v0.24.0`.
1111
2. Update `CHANGELOG.md`, `docs/RELEASE_NOTES.md`, README download commands and
1212
native migration/verification records with only evidence that is current for
1313
the tagged commit.

‎docs/USER_GUIDE.md‎

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# ShadowCode user guide
22

3-
This guide covers the supported 0.23 native release. The desktop, CLI, terminal
3+
This guide covers the supported 0.24 native release. The desktop, CLI, terminal
44
interface, and integrations use the same Python-free Rust engine. See the
55
[native desktop](NATIVE_DESKTOP.md), [native CLI](NATIVE_CLI.md), and
66
[release gates](NATIVE_MIGRATION.md) guides for platform and integration details.
@@ -82,6 +82,13 @@ tool timeout before the worker exits.
8282

8383
## Models, settings, and goals
8484

85+
The model selector groups **Local model (ShadowCode agent)** HTTP models and
86+
**Claude / Codex / Grok (vendor agent)** official CLIs. Vendor login stays with
87+
`claude auth login`, `codex login`, or `grok login`; ShadowCode never reads those
88+
credentials. Pause/Steer interrupts the vendor process and sends a follow-up.
89+
**Rewind does not apply** to vendor-agent tasks. Details:
90+
[vendor CLI backends](NATIVE_CLI_BACKENDS.md).
91+
8592
The model selector accepts detected or configured models and a custom model ID.
8693
Settings covers provider connection, permissions, appearance, notifications,
8794
hooks, MCP, and plugins. API keys remain separate from YAML. Browser notifications

0 commit comments

Comments
 (0)