@erichll/pi-sandbox 0.15.0 → 0.15.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/CHANGELOG.md +5 -275
  2. package/README.md +18 -12
  3. package/package.json +4 -4
package/CHANGELOG.md CHANGED
@@ -1,278 +1,8 @@
1
1
  # Changelog
2
2
 
3
- ## 0.15.0 - 2026-08-29
3
+ ## 0.15.2 - 2026-09-02
4
4
 
5
- - Align the package version with `@erichll/pi-auto-review` `0.15.0` and update
6
- the exact dependency to inherit CJK-aware reviewer input budgeting, working
7
- approve and break-glass retries, and accurate waiting-for-user review status.
8
- No pi-sandbox runtime, filesystem/network policy, grant, or public API changes.
9
-
10
- ## 0.14.0 - 2026-08-28
11
-
12
- - Align the package version with `@erichll/pi-auto-review` `0.14.0` and update
13
- the exact dependency to inherit the evidence-driven policy-audit optimizer and
14
- its schema v2 migration. No pi-sandbox runtime, filesystem/network policy,
15
- grant, or public API changes.
16
-
17
- ## 0.13.0 - 2026-08-28
18
-
19
- - Align the package version with `@erichll/pi-auto-review` `0.13.0` and update
20
- the exact dependency to inherit the directional `path_*` /
21
- `external_directory_*` permission-system surface support. No pi-sandbox
22
- runtime, filesystem/network policy, grant, or public API changes.
23
-
24
- ## 0.12.0 - 2026-08-27
25
-
26
- - Align the package version with `@erichll/pi-auto-review` `0.12.0` and update
27
- the exact dependency to inherit the private permission-policy audit and its
28
- shutdown idempotence fix. No pi-sandbox runtime, filesystem/network policy,
29
- grant, or public API changes.
30
-
31
- ## 0.11.1 - 2026-08-25
32
-
33
- - Keep Sandbox Runtime's `CLAUDE_CODE_TMPDIR` aligned with each command's
34
- private `pi-sandbox-tmp-*` directory. This prevents Sandbox Runtime from
35
- overriding `TMPDIR` with its missing `/tmp/claude` fallback, notably fixing
36
- `TMPDIR`-dependent tools on macOS.
37
- - Align the exact `@erichll/pi-auto-review` dependency with `0.11.1`.
38
-
39
- ## 0.11.0 - 2026-08-24
40
-
41
- - **Tag unmatched network domains.** When a domain does not match any static
42
- allow or deny rule, the approval request now explicitly records this as
43
- "network-unmatched" so that audit logs, reviewer context, and grants clearly
44
- distinguish static-policy misses from other review triggers.
45
- - **Structured network destination.** Domain approval requests now include
46
- separate host, port, and protocol fields in addition to the combined
47
- destination string. Grants bind each component independently, preventing a
48
- grant for one host-port-protocol combination from being reused for another.
49
- - Update the dev-only `pi-subagents` compatibility baseline from `0.54.0` to
50
- `0.56.0`. No runtime or public API changes.
51
-
52
- ## 0.10.0 - 2026-08-22
53
-
54
- - Align the package version with `@erichll/pi-auto-review` `0.10.0` and update
55
- the exact dependency. This inherits the new single above-editor review widget,
56
- its stale-concurrency guard, and the removal of tool-call grouping and
57
- transcript auto-append; the sandbox's network, filesystem, grant, and
58
- external-worker security behavior is unchanged.
59
-
60
- ## 0.9.0 - 2026-08-22
61
-
62
- - Align the planned package version with `@erichll/pi-auto-review` `0.9.0` and
63
- update the exact dependency. This inherits permission-system 27-only
64
- session-scoped authorizer registration and local TUI review aggregation; the
65
- sandbox's network, filesystem, grant, and external-worker security behavior
66
- is unchanged.
67
-
68
- ## 0.8.7 - 2026-08-21
69
-
70
- - Update the exact `@erichll/pi-auto-review` dependency to `0.8.2`, inheriting
71
- structured interactive review results: the TUI now renders allow/confirm/
72
- defer/deny/stopper outcomes with the reviewer model name, input/output token
73
- counts, and duration as markdown-style quote rows. No pi-sandbox runtime or
74
- public API changes.
75
-
76
- ## 0.8.6 - 2026-08-21
77
-
78
- - Update the exact `@erichll/pi-auto-review` dependency to `0.8.1`, inheriting
79
- permission-system 26.x compatibility: pi-auto-review now requires
80
- `@gotgenes/pi-permission-system` `^26.0.0` and restores TUI auto-confirm for
81
- capped `path` / `external_directory` allows (binding the live dialog via
82
- `requestId` plus `request.value`). No pi-sandbox runtime or public API
83
- changes.
84
-
85
- ## 0.8.5 - 2026-08-21
86
-
87
- - Update the exact `@erichll/pi-auto-review` dependency to `0.8.0`, inheriting
88
- the break-glass recovery feature: deny results now carry a `denialSource` and
89
- a `recoveryCommand` naming `/auto-review-approve` or
90
- `/auto-review-break-glass`, or stating that a local hard deny cannot be
91
- overridden.
92
-
93
- ## 0.8.4 - 2026-08-20
94
-
95
- - Update the dev-only `pi-subagents` compatibility baseline to `0.53.0`.
96
- - Extend the external-isolation compatibility gate to require and report the
97
- `0.53.0`-or-newer baseline. No pi-sandbox runtime or public API changes.
98
-
99
- ## 0.8.3 - 2026-08-20
100
-
101
- - Update the exact `@erichll/pi-auto-review` dependency to `0.6.0`, inheriting
102
- the reviewer change to drop the host-side user-constraint overlay (allow/
103
- defer/deny judgments stay with the reviewer model).
104
- - Update the dev-only `pi-subagents` baseline to `0.52.0`.
105
- - No pi-sandbox runtime or public API changes.
106
-
107
- ## 0.8.2 - 2026-08-20
108
-
109
- - Update the exact `@erichll/pi-auto-review` dependency to `0.5.0`, inheriting the
110
- reviewer token-usage optimization: request-aware evidence selection, independent
111
- compact reviewer requests, a tighten-only input token budget, typed bounded
112
- retries, and per-attempt usage telemetry.
113
- - No pi-sandbox runtime or public API changes.
114
-
115
- ## 0.8.1 - 2026-08-19
116
-
117
- - Update the exact `@erichll/pi-auto-review` dependency to `0.4.0`, inheriting its
118
- credential-exfiltration hardening and reviewer authentication-refresh safeguards.
119
- - No pi-sandbox runtime or public API changes.
120
-
121
- ## 0.8.0 - 2026-08-18
122
-
123
- - **Trusted network domain policies.** Persistent `network.allowedDomains` and
124
- `network.deniedDomains` arrays in the trusted global configuration
125
- (`~/.pi/agent/extensions/pi-sandbox/config.json`, with legacy fallback) now
126
- authorize matching connections statically, without the one-shot reviewer.
127
- Entries use Sandbox Runtime-compatible patterns: exact domains,
128
- strict-subdomain wildcards such as `*.example.com`, and an optional `:port`;
129
- a bare `*` (optionally with a port) is accepted only in `deniedDomains`.
130
- Values are trimmed and deduplicated, and malformed or unknown configuration
131
- fails closed. Precedence is deterministic — deny, then allow, then the
132
- existing one-shot reviewer — and empty arrays preserve the previous
133
- behavior (no persistent network authorization, with every eligible public
134
- connection reviewed once).
135
- - **Policy parity across execution surfaces.** The same copied network policy
136
- is applied to main-agent Bash, built-in subagents, and outer-isolated
137
- `pi-subagents` workers. External workers receive policy only through their
138
- capability-bound supervisor registration; missing, malformed, or extra-field
139
- transport becomes deny-all without disabling dynamic review for valid
140
- policies.
141
- - **Exfiltration-risk documentation.** The README now warns that domain
142
- allowlists are not a complete data-loss-prevention boundary, that
143
- multi-tenant or user-uploadable destinations (for example `github.com`) can
144
- themselves be exfiltration channels, and that pi-sandbox never infers or
145
- silently adds domains.
146
- - Pin `@anthropic-ai/sandbox-runtime` to `0.0.73` (fixed version; its
147
- network-policy evaluation semantics are reused by the static allow/deny
148
- matching).
149
-
150
- ## 0.7.0 - 2026-08-17
151
-
152
- - **Builtin `subagent` model fail-fast.** An explicit `model` on `start`/
153
- `handoff` is now validated against the host model registry before a child Pi
154
- spawns. Unknown models fail before any session/broker/process is created;
155
- ambiguous bare ids are rejected with a `provider/model` hint; a trailing
156
- `:thinking` suffix is preserved; `status`/`wait`/`stop`/`follow_up` are never
157
- intercepted.
158
-
159
- - **FleetView external-worker display.** Declare `pi-subagents >=0.50.0` as an
160
- **optional** peer dependency (no forced install for builtin/off users) and
161
- mirror pi-sandbox's isolated external workers into pi-subagents' FleetView
162
- (caller-owned `external-runs`) whenever `subagents.provider ===
163
- "pi-subagents"` AND `externalWorkerIsolation === "enforce"`. Loading uses a
164
- dynamic import only; import/registry failures disable the display path
165
- without weakening fail-closed isolation or network approval. v1 records are
166
- `running`-only and cleaned up on worker unregister, session shutdown, and
167
- supervisor replacement.
168
-
169
- - **`pi-subagents` capability baseline raised to `0.50.0`** (test/CI only;
170
- does not affect the published runtime). The dev dependency is pinned exactly
171
- to `0.50.0`, the capability boundary is redocumented, the compatibility-gate
172
- entry resolves through the package `exports["."]` via `import.meta.resolve`,
173
- and the external-isolation probe is generalized. Verified by
174
- `gate:external-isolation` and the model-backed `gate:pi-subagents`
175
- (`PASS`, `piSubagents: 0.50.0`).
176
-
177
- ## 0.6.2 - 2026-08-13
178
-
179
- - Bump `@erichll/pi-auto-review` to `0.3.5` so consumers inherit the raised
180
- default model-review timeout (90s) and retries (2) through the broker.
181
- - Update the documented `pi-subagents` capability boundary to `0.45.2` and relax
182
- the dev dependency to `^0.47.1` (test/CI only; does not affect the published
183
- runtime).
184
-
185
- ## 0.6.1 - 2026-08-09
186
-
187
- - Upgrade `@anthropic-ai/sandbox-runtime` from `0.0.67` to `0.0.71` (path
188
- normalization, proxy abort and query-string redaction hardening, per-command
189
- violation attribution, network domain `:port` suffixes and per-entry deny
190
- reasons, compacted macOS Seatbelt profiles). No breaking contract changes.
191
- - Give every sandboxed command (main-agent Bash and builtin subagents) a
192
- **private, writable temp directory**: each invocation creates an isolated
193
- `pi-sandbox-tmp-*` subdirectory of the host temp tree, adds it to the
194
- sandbox's read/write allowlists, and points the command's `TMPDIR`, `TMP`,
195
- and `TEMP` at it. The shared host temp root stays read-only to the sandbox;
196
- the directory is removed when the command exits. If the host temp directory
197
- is unavailable (e.g. a read-only `/tmp`), the command degrades to the
198
- previous denied-temp behaviour instead of failing. This mirrors the outer
199
- external-worker isolation and unifies the broker temp-dir env under
200
- `PI_SANDBOX_TMPDIR`.
201
- - Add an injectable `createTempDir` test seam plus a broker probe fixture and
202
- runner coverage for the private-temp success and degrade paths.
203
-
204
- - Retarget the development compatibility target from `pi-subagents 0.42.1` to
205
- `pi-subagents 0.44.0` and update the coexistence assertions, capability
206
- boundary, and compatibility gate. The 0.44.0 line lands internal
207
- workflow/mission/schedule fixes that do not change pi-sandbox's contract
208
- (tool-ownership detection, `PI_SUBAGENT_PI_BINARY` worker bootstrap).
209
- - Adapt the compatibility gate's "direct child" probe to the `workflowScript`
210
- single-run form: pi-subagents 0.43.0 removed public top-level `agent`/`task`
211
- direct execution, so the external provider's direct single-child launch is
212
- now `subagent({ workflowScript: "return runs.run('main', { agent, task })" })`.
213
- This unblocks the `subagents.externalWorkerIsolation: "enforce"` gate, which
214
- previously timed out when the isolated worker could not reconcile the removed
215
- direct signature with the newer `workflowScript`-only contract.
216
-
217
- ## 0.5.0 - 2026-08-08
218
-
219
- - Pin the development compatibility target to `pi-subagents 0.42.1` and add
220
- coexistence assertions for its package identity and tool ownership.
221
- - Add `npm run gate:pi-subagents`, an opt-in real-Pi compatibility gate. It
222
- uses an isolated agent directory and reports `SKIP` unless a dedicated gate
223
- model and credentials are supplied. The gate now waits for returned child
224
- results and uses configurable provider-latency timeouts.
225
- - Add the opt-in `subagents.externalWorkerIsolation: "enforce"` bootstrap for
226
- external `pi-subagents` workers. It uses a tarball-shipped launcher and
227
- fails closed if its outer Sandbox Runtime broker cannot start, protects
228
- first-time security configuration creation, and cleans up only unchanged
229
- temporary bind placeholders.
230
-
231
- ## 0.4.3 - 2026-08-06
232
-
233
- - Move the `pi-auto-review` dependency to `0.3.3`, which allows multi-segment
234
- model ids (`provider/group/model`) in the reviewer config.
235
- - Bump `pi-subagents` dev dependency to `0.41.0` (build/test tooling only).
236
-
237
- ## 0.4.2 - 2026-07-30
238
-
239
- - Load trusted configuration from
240
- `~/.pi/agent/extensions/pi-sandbox/config.json`, with a read fallback to the
241
- legacy `~/.pi/agent/pi-sandbox.json` path when the new file is absent.
242
- - Deny writes to common workspace secrets by default (`.env` variants,
243
- `secrets/` / `.secrets/`, and discovered `*.pem` / `*.key` / `*.p12` /
244
- `*.pfx`), while leaving template files such as `.env.example` writable.
245
- - Protect `~/.pi/agent/extensions` (including the extension-local config) from
246
- sandboxed writes.
247
- - On macOS, add git-style secret globs for nested create protection; Linux keeps
248
- literal absolute paths only because Sandbox Runtime drops globs there.
249
-
250
- ## 0.4.1 - 2026-07-29
251
-
252
- - Republish to refresh the npm search index used by the pi.dev package gallery.
253
- - Depend on `@erichll/pi-auto-review@0.3.2`.
254
-
255
- ## 0.4.0 - 2026-07-29
256
-
257
- - Add an optional, approval-gated Host-IPC Bash backend for commands that need
258
- access to host Unix sockets.
259
- - Support trusted preflight command prefixes without treating a prefix as
260
- authorization; every complete command still requires an exact one-shot
261
- approval.
262
- - Support one non-recursive host retry after a narrowly detected Unix-socket
263
- `Operation not permitted` sandbox failure.
264
- - Preserve the first attempt's output, apply only the original timeout's
265
- remaining duration, and never retry successful, timed-out, or aborted
266
- commands.
267
- - Refuse Host-IPC forwarding for built-in subagents.
268
- - Add deterministic execution and approval coverage plus a Linux tmux socket
269
- smoke test.
270
-
271
- ## 0.3.1 - 2026-07-29
272
-
273
- - Add trusted global filesystem read-path extensions while keeping default
274
- write and configuration protections intact.
275
-
276
- ## 0.3.0 - 2026-07-28
277
-
278
- - Initial public release.
5
+ - No user-facing changes. Compatibility-verification release only: the
6
+ dev/test baselines move to `pi-subagents 0.63.0` and
7
+ `@anthropic-ai/sandbox-runtime 0.0.75`, with sandbox runtime, policy,
8
+ grants, and the public API unchanged.
package/README.md CHANGED
@@ -9,7 +9,7 @@ also run complete process-backed subagent trees inside independent sandboxes.
9
9
  - [Security model](#security-model)
10
10
  - [Linux requirements](#linux-requirements)
11
11
  - [Subagent provider](#subagent-provider)
12
- - [`pi-subagents` 0.53.0 capability boundary](#pi-subagents-0530-capability-boundary)
12
+ - [`pi-subagents` 0.63.0 capability boundary](#pi-subagents-0630-capability-boundary)
13
13
  - [Network domain policy](#network-domain-policy)
14
14
  - [Optional host IPC fallback](#optional-host-ipc-fallback)
15
15
  - [Additional trusted read paths](#additional-trusted-read-paths)
@@ -96,7 +96,7 @@ Supported modes:
96
96
  itself is not wrapped while `externalWorkerIsolation` is `off`.
97
97
  - `off`: protect Bash only.
98
98
 
99
- ### `pi-subagents` 0.53.0 capability boundary
99
+ ### `pi-subagents` 0.63.0 capability boundary
100
100
 
101
101
  `pi-sandbox` verifies the following combination in its test suite and release
102
102
  gate. This version boundary is pinned exactly (see the package
@@ -107,19 +107,24 @@ gate. This version boundary is pinned exactly (see the package
107
107
  published peer range remains `>=0.50.0`; this documents the current tested
108
108
  development baseline, not a runtime minimum.
109
109
 
110
- | Capability | `builtin` | `pi-subagents` 0.53.0 |
110
+ | Capability | `builtin` | `pi-subagents` 0.63.0 |
111
111
  | --- | --- | --- |
112
112
  | Outer worker sandbox | Yes | Opt-in (`externalWorkerIsolation: "enforce"`) |
113
113
  | Bash sandbox | Yes | Yes |
114
114
  | Persistent follow-up | Yes | Yes |
115
115
  | `workflowScript`, missions, schedules | No | Yes |
116
+ | Named workflow resources | No | Yes |
116
117
  | permission-system parent forwarding | Not required | Verified by compatibility gate |
117
118
 
118
- Upgrading across a capability boundary (for example `0.49.0` → `0.50.0`, or
119
- moving the tested baseline to `0.53.0`) requires re-running
120
- `npm run gate:external-isolation` and, before a release, the model-backed
121
- `npm run gate:pi-subagents`. See `docs/compat-notes.md` for the recorded
122
- compatibility seams and how each is verified on upgrade.
119
+ Moving the tested baseline requires re-running `npm run gate:external-isolation`
120
+ and, before a release, the model-backed `npm run gate:pi-subagents`. See
121
+ `docs/compat-notes.md` for the recorded compatibility seams and how each is
122
+ verified on upgrade.
123
+
124
+ The 0.63.0 baseline also exercises tasks passed as an `@task.md` argument and
125
+ standard Git worktree metadata (`.git` pointer plus `commondir`) through the
126
+ real outer-sandbox launcher. Worktrunk itself is not a dependency; provider
127
+ selection remains upstream behavior.
123
128
 
124
129
  For the external provider, `off` leaves the worker process outside the outer
125
130
  Sandbox Runtime boundary. Do not treat inherited Bash sandboxing as complete
@@ -127,10 +132,11 @@ worker isolation unless the trusted global configuration explicitly enables
127
132
  `enforce`.
128
133
 
129
134
  Note on the external provider's public execution surface: pi-subagents 0.43.0
130
- removed top-level `agent`/`task` direct execution. Every public `subagent`
131
- launch — including a minimal single child — is expressed as a `workflowScript`
132
- such as `return runs.run('main', { agent, task })`. The compatibility gate's
133
- "direct single child" probe uses that single-run form.
135
+ removed the old static multi-agent controls; `workflowScript` remains the
136
+ public multi-agent orchestration surface. Current releases also accept a direct
137
+ single-child `{ agent, task }` launch. The compatibility gate deliberately uses
138
+ `return runs.run('main', { agent, task })` so the single-child probe continues
139
+ to exercise the workflow executor and its isolation seam.
134
140
 
135
141
  The configuration parser rejects malformed JSON, unknown fields, and unknown
136
142
  providers instead of silently weakening isolation.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@erichll/pi-sandbox",
3
- "version": "0.15.0",
3
+ "version": "0.15.2",
4
4
  "description": "Linux (bubblewrap) and macOS (Seatbelt) process sandbox for Pi backed by Anthropic's @anthropic-ai/sandbox-runtime. Fail-closed static filesystem policy plus per-connection network approval from pi-auto-review; sandboxes main-agent Bash and built-in subagent process trees.",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -50,8 +50,8 @@
50
50
  "test": "node --experimental-strip-types --test test/*.test.ts"
51
51
  },
52
52
  "dependencies": {
53
- "@anthropic-ai/sandbox-runtime": "0.0.73",
54
- "@erichll/pi-auto-review": "0.15.0"
53
+ "@anthropic-ai/sandbox-runtime": "0.0.75",
54
+ "@erichll/pi-auto-review": "0.15.2"
55
55
  },
56
56
  "peerDependencies": {
57
57
  "@earendil-works/pi-coding-agent": "^0.84.1",
@@ -66,7 +66,7 @@
66
66
  "devDependencies": {
67
67
  "@earendil-works/pi-coding-agent": "^0.84.1",
68
68
  "@types/node": "^26.2.0",
69
- "pi-subagents": "0.56.0",
69
+ "pi-subagents": "0.63.0",
70
70
  "typescript": "^6.0.3"
71
71
  }
72
72
  }