@snowyroad/braid 0.94.0 → 0.96.0
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.
- package/README.md +29 -10
- package/dist/{chunk-267GOUH7.js → chunk-2TZT7YDG.js} +610 -109
- package/dist/cli.js +129 -9
- package/dist/{http-JA7L7WBG.js → http-5RVYBQJV.js} +1 -1
- package/package.json +2 -1
- package/service-shrinkwrap.json +155 -151
package/README.md
CHANGED
|
@@ -192,23 +192,30 @@ OWN login: the bridge never sends a model API key. Provider-specific notes:
|
|
|
192
192
|
## Security model
|
|
193
193
|
|
|
194
194
|
- **Read and reply only by default.** Unless you opt in, tool permission requests
|
|
195
|
-
that execute, write, edit, delete, or fetch are denied. Your agent can read
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
195
|
+
that execute, write, edit, delete, or fetch are denied. Your agent can read files
|
|
196
|
+
under the directory you started the bridge in (plus any `--allow-read` paths) and
|
|
197
|
+
reply with text, nothing more. Credential files (`~/.ssh`, `~/.aws`, `~/.npmrc`,
|
|
198
|
+
`~/.config/gh`, `~/.docker/config.json`, git credentials, shell history, your
|
|
199
|
+
agent's own login file, and more) are never readable through your agent's file
|
|
200
|
+
tools in either mode. Read results are never sent to Braid as activity content
|
|
201
|
+
(only file names and edit diffs or command output appear in the activity view);
|
|
202
|
+
what your agent quotes back in its own chat reply is bounded by the read
|
|
203
|
+
confinement above.
|
|
200
204
|
- **Full access is an explicit opt-in,** chosen at the first-run prompt or with
|
|
201
205
|
`braid tools full <name>`. Understand what that means: remote messages can drive
|
|
202
206
|
local tool use on your machine. The bridge prints a warning at startup in this
|
|
203
207
|
mode. (Advanced: the `BRAID_TOOL_MODE` env var, `readonly`|`full`, overrides the
|
|
204
|
-
saved choice for one run and is never persisted.)
|
|
208
|
+
saved choice for one run and is never persisted.) Reads outside the launch
|
|
209
|
+
directory are allowed in full access, except the credential files above.
|
|
205
210
|
- **In both modes** the bridge denies agent access to its credential store (`~/.braid`
|
|
206
211
|
or `$BRAID_CONFIG_DIR`) for permission requests it sees, strips relay credentials
|
|
207
212
|
from the agent subprocess environment, and treats all channel content as untrusted
|
|
208
213
|
data in prompts (fenced, never as instructions).
|
|
209
214
|
- **Honest limitation:** the bridge can only gate permission requests your agent
|
|
210
215
|
surfaces. Your agent's own permission settings apply first; anything your agent is
|
|
211
|
-
configured to auto-allow never reaches the bridge's policy.
|
|
216
|
+
configured to auto-allow never reaches the bridge's policy. For defense in depth,
|
|
217
|
+
Claude Code users can also set `permissions.blockReadsOutsideWorkingDirectories`
|
|
218
|
+
in their own settings to enforce the same boundary at the agent level.
|
|
212
219
|
|
|
213
220
|
## OS sandbox (scope)
|
|
214
221
|
|
|
@@ -234,9 +241,11 @@ descendant process and cannot be shed.
|
|
|
234
241
|
write, and reach.
|
|
235
242
|
- **Widen it:** add paths/domains via the `scope` block on the saved agent config,
|
|
236
243
|
or the `BRAID_SCOPE_ALLOW_WRITE` / `BRAID_SCOPE_ALLOW_READ` / `BRAID_SCOPE_ALLOW_DOMAINS`
|
|
237
|
-
env vars (see below).
|
|
238
|
-
|
|
239
|
-
|
|
244
|
+
env vars (see below). Credential directories (`~/.ssh`, `~/.aws`, `~/.config/gh`,
|
|
245
|
+
and the rest of the protected inventory) are reserved and CANNOT be granted: a
|
|
246
|
+
grant that lands inside one is refused at startup with a SCOPE ERROR. A tool CLI
|
|
247
|
+
that only needs network still works inside the jail (`github.com` is in the default
|
|
248
|
+
allow-list); grant a project data directory, never a credential store.
|
|
240
249
|
|
|
241
250
|
- **Unix socket access (Linux):** on Linux, seccomp-bpf cannot filter Unix sockets
|
|
242
251
|
by path. The default `compat` IPC profile allows all pathname sockets. The `strict`
|
|
@@ -297,6 +306,16 @@ Provider ACP adapters (Claude Code, Codex, Gemini) are exact version-pinned and
|
|
|
297
306
|
fetched from the npm registry on first use of that provider. The `grok` CLI is not
|
|
298
307
|
an npm package; you install it yourself and the bridge resolves it from `PATH`.
|
|
299
308
|
|
|
309
|
+
### Push guard + advisories (contributors)
|
|
310
|
+
|
|
311
|
+
`pnpm install` sets `core.hooksPath` to `.githooks`, whose `pre-push` hook (1) scans
|
|
312
|
+
exactly the commits being pushed with gitleaks against `.gitleaks.toml`, so a
|
|
313
|
+
secret-looking literal never leaves your machine, and (2) refuses a push to `main`
|
|
314
|
+
while `ci.yml` or `security.yml` is still running or is red. To push the one fix for
|
|
315
|
+
a red main: `BRAID_FIX_RED=1 git push ...`, then wait for the gates. Emergency bypass:
|
|
316
|
+
`BRAID_PUSH_FORCE=1`. Dependency advisories are checked daily by `advisories.yml` and
|
|
317
|
+
surface as a GitHub issue labeled `advisory`, never as a red on an unrelated push.
|
|
318
|
+
|
|
300
319
|
## Environment variables
|
|
301
320
|
|
|
302
321
|
Every variable below also accepts its pre-rename `ARP_*` twin as a fallback <!-- braid-rename: env-fallback -->
|