harborloop 0.5.20 → 0.5.22
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 +43 -0
- package/bin/checksums.json +7 -7
- package/package.json +7 -7
package/README.md
CHANGED
|
@@ -187,6 +187,49 @@ The pause is stored **locally** and read by the hook before it touches the
|
|
|
187
187
|
network, so it still works on a plane — and so a toggle cannot fail at exactly
|
|
188
188
|
the moment you need it.
|
|
189
189
|
|
|
190
|
+
## Guardrails your agent cannot switch off
|
|
191
|
+
|
|
192
|
+
Every way to switch a guardrail off is a file in `~/.harbor`: the pause,
|
|
193
|
+
`"toolGuard": false` in `synced-origins.json`, and the exceptions
|
|
194
|
+
`harbor allow-once` writes. Your agent runs as you, so it can write those files
|
|
195
|
+
too. The hook refuses the agent's own `harbor off`, `harbor allow-once` and the
|
|
196
|
+
other commands meant for you, but a shell has more ways to write a file than a
|
|
197
|
+
hook can recognise. The boundary that holds is the agent's own sandbox, told to
|
|
198
|
+
refuse writes to `~/.harbor`. Harbor's hooks run outside that sandbox, so they
|
|
199
|
+
keep working.
|
|
200
|
+
|
|
201
|
+
**Claude Code.** Merge into `~/.claude/settings.json`:
|
|
202
|
+
|
|
203
|
+
```json
|
|
204
|
+
{
|
|
205
|
+
"sandbox": {
|
|
206
|
+
"enabled": true,
|
|
207
|
+
"allowUnsandboxedCommands": false,
|
|
208
|
+
"filesystem": { "denyWrite": ["~/.harbor"] }
|
|
209
|
+
},
|
|
210
|
+
"permissions": { "deny": ["Edit(~/.harbor/**)"] }
|
|
211
|
+
}
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
The sandbox covers shell commands. Claude's own Write and Edit tools run
|
|
215
|
+
outside it, so the `Edit` rule covers them. `allowUnsandboxedCommands: false`
|
|
216
|
+
stops Claude retrying a refused command outside the sandbox. The sandbox also
|
|
217
|
+
sends shell network traffic through an allow-list; `/sandbox` shows it.
|
|
218
|
+
|
|
219
|
+
**Codex.** In `~/.codex/config.toml`:
|
|
220
|
+
|
|
221
|
+
```toml
|
|
222
|
+
sandbox_mode = "workspace-write"
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
and keep `~/.harbor`, and your home folder, out of
|
|
226
|
+
`[sandbox_workspace_write] writable_roots`. A session started with
|
|
227
|
+
`--sandbox danger-full-access` or `--dangerously-bypass-approvals-and-sandbox`
|
|
228
|
+
skips it.
|
|
229
|
+
|
|
230
|
+
While a rule is refusing commands, `harbor doctor` checks both and says what is
|
|
231
|
+
missing.
|
|
232
|
+
|
|
190
233
|
## Switching workspaces
|
|
191
234
|
|
|
192
235
|
One account, several workspaces — `harbor workspaces` lists them and marks the
|
package/bin/checksums.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.5.
|
|
2
|
+
"version": "0.5.22",
|
|
3
3
|
"algorithm": "sha256",
|
|
4
4
|
"binaries": {
|
|
5
|
-
"@gethrbr/harborloop-darwin-arm64": "
|
|
6
|
-
"@gethrbr/harborloop-darwin-x64": "
|
|
7
|
-
"@gethrbr/harborloop-linux-x64": "
|
|
8
|
-
"@gethrbr/harborloop-linux-arm64": "
|
|
9
|
-
"@gethrbr/harborloop-linux-x64-musl": "
|
|
10
|
-
"@gethrbr/harborloop-win32-x64": "
|
|
5
|
+
"@gethrbr/harborloop-darwin-arm64": "3d9183854acea4e48be8097653a72b596d91f2b9f953f04cca764746538012a7",
|
|
6
|
+
"@gethrbr/harborloop-darwin-x64": "729a511f7d0e7dd4f5f26ba83aa72977d5d7a2ae1ec22080c7b16b7382266d3c",
|
|
7
|
+
"@gethrbr/harborloop-linux-x64": "e49b2fef211936a5356d53cfa4dd97178d5ec8da9d4d2a9bd23292860723e0ae",
|
|
8
|
+
"@gethrbr/harborloop-linux-arm64": "0aa17f75c9c4dc0108dc7920d5519fd23e6da4b09c5c090b0472d9e042ac5887",
|
|
9
|
+
"@gethrbr/harborloop-linux-x64-musl": "1367f4cf7e69c0c7758fce01b0bd598899f0174daeff971ea69728985224826b",
|
|
10
|
+
"@gethrbr/harborloop-win32-x64": "0d8605949b64d867b97dabc10007828353bc41eb7c3c647c986502ef2db40df8"
|
|
11
11
|
}
|
|
12
12
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "harborloop",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.22",
|
|
4
4
|
"description": "Install and health-check the harbor knowledge loop in your terminal. Recall in Claude Code, Codex and Cursor; a doctor that can say no.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -26,12 +26,12 @@
|
|
|
26
26
|
"agents.md"
|
|
27
27
|
],
|
|
28
28
|
"optionalDependencies": {
|
|
29
|
-
"@gethrbr/harborloop-darwin-arm64": "0.5.
|
|
30
|
-
"@gethrbr/harborloop-darwin-x64": "0.5.
|
|
31
|
-
"@gethrbr/harborloop-linux-x64": "0.5.
|
|
32
|
-
"@gethrbr/harborloop-linux-arm64": "0.5.
|
|
33
|
-
"@gethrbr/harborloop-linux-x64-musl": "0.5.
|
|
34
|
-
"@gethrbr/harborloop-win32-x64": "0.5.
|
|
29
|
+
"@gethrbr/harborloop-darwin-arm64": "0.5.22",
|
|
30
|
+
"@gethrbr/harborloop-darwin-x64": "0.5.22",
|
|
31
|
+
"@gethrbr/harborloop-linux-x64": "0.5.22",
|
|
32
|
+
"@gethrbr/harborloop-linux-arm64": "0.5.22",
|
|
33
|
+
"@gethrbr/harborloop-linux-x64-musl": "0.5.22",
|
|
34
|
+
"@gethrbr/harborloop-win32-x64": "0.5.22"
|
|
35
35
|
},
|
|
36
36
|
"publishConfig": {
|
|
37
37
|
"//": "A scoped package defaults to RESTRICTED, and `npm publish` on a scope with no paid plan fails outright rather than publishing privately. This is the whole difference between a wedge anybody can `npx` and a 402.",
|