@openlatch/client 0.3.3 → 0.4.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 +19 -8
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -30,8 +30,9 @@ It plugs into the agent's native lifecycle hooks, decides locally and in-process
|
|
|
30
30
|
|
|
31
31
|
```bash
|
|
32
32
|
npx @openlatch/client init # installs the client, detects your agents, wires their hooks
|
|
33
|
-
openlatch auth login # links this machine to your OpenLatch account (opens the browser)
|
|
33
|
+
openlatch system auth login # links this machine to your OpenLatch account (opens the browser)
|
|
34
34
|
claude # use your agent as usual — every tool call is now covered
|
|
35
|
+
codex # … and the other one, under the same policy on the same host
|
|
35
36
|
```
|
|
36
37
|
|
|
37
38
|
`openlatch status` shows what is captured and enforced on this host. The [dashboard](https://app.openlatch.ai) shows the events and the verdicts. Full walkthrough: [Getting started](https://openlatch.ai/docs/getting-started/).
|
|
@@ -71,18 +72,28 @@ The verdict vocabulary is **Allow, Ask, Block or Optimize**. What this client ca
|
|
|
71
72
|
| Verdict | On the wire / in the bundle | What this client does today |
|
|
72
73
|
| ------- | --------------------------- | ------------------------- |
|
|
73
74
|
| **Allow** | `allow`, `approve` | The action proceeds. `approve` is a user-confirmed allow |
|
|
74
|
-
| **Ask** | No wire variant — an `allow` / `approve` carrying `context` |
|
|
75
|
+
| **Ask** | No wire variant — an `allow` / `approve` carrying `context` | It **allows and flags**; it does not hold the agent waiting on a human. Claude Code renders it as `permissionDecision: "ask"` with the alert as its reason; Codex CLI has no `ask` tier, so it degrades to a `systemMessage` carrying that same reason. It prevents recurrence, not the first occurrence |
|
|
75
76
|
| **Block** | `deny` — the only action a `kind=command` rule may take | Reaches the agent as a native deny at `pre_tool_use`, naming the rule that produced it |
|
|
76
|
-
| **Optimize** | `kind=request` rules: `prefix_reorder`, `history_trim`, `prompt_edit` | **Measurement only.** Out of the box the
|
|
77
|
+
| **Optimize** | `kind=request` rules: `prefix_reorder`, `history_trim`, `prompt_edit` | **Measurement only.** Out of the box the model relay observes, reports what a transform *would* have saved, and forwards the original bytes |
|
|
77
78
|
|
|
78
79
|
Each rule runs in Monitor (record the match, allow the action) or Enforce (apply the verdict). Most restrictive wins across matching rules.
|
|
79
80
|
|
|
80
81
|
## Supported agents
|
|
81
82
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
83
|
+
**Two agents are wired end-to-end: [Claude Code](https://claude.ai/code) and [OpenAI Codex CLI](https://developers.openai.com/codex/cli).** `init` detects every agent on the host and wires **all** of them — coverage is the default, and `--agent <type>` is how you opt one out. `doctor`, `status` and `uninstall` each report and tear down every agent they find.
|
|
84
|
+
|
|
85
|
+
Coverage is stated per agent **and per plane**. An unqualified "Enforced" would round an enforced command plane and an observe-only request plane back up to green, and that is the one arithmetic this table refuses.
|
|
86
|
+
|
|
87
|
+
| Agent | Delivery | Command plane | Request plane | Control level |
|
|
88
|
+
| ----- | -------- | ------------- | ------------- | ------------- |
|
|
89
|
+
| **Claude Code** | any | **Enforced** | Observed *(runtime-checked)* | **Enforced** *(command plane)* |
|
|
90
|
+
| **Codex CLI** | managed (MDM / system / cloud) | **Enforced**, and **not disableable by the developer** | Observed *(runtime-checked)* | **Enforced** *(command plane)* |
|
|
91
|
+
| **Codex CLI** | self-serve (`npx init`) | **Monitored** until `/hooks` trust; **Enforced** after | Observed *(runtime-checked)* | Monitored → Enforced |
|
|
92
|
+
| Cursor · Windsurf · GitHub Copilot · Gemini CLI · Cline · OpenClaw | — | Not wired | Not wired | Known |
|
|
93
|
+
|
|
94
|
+
**The vocabulary is closed.** *Enforced* — the verdict reaches the agent and is obeyed. *Monitored* — the integration is installed and events flow, but a verdict cannot yet be delivered, so nothing is prevented. *Observed* — capture and would-have measurement only, by design for this phase. *Known* — identified and classified, with the limits stated.
|
|
95
|
+
|
|
96
|
+
**Why Codex has two rows.** A user-level Codex hook is *marked for review and skipped until trusted*, so a fresh self-serve install is Monitored — not Enforced — until you run `/hooks` in Codex and trust the OpenLatch hook. Any re-install that changes the hook command re-arms that review. On the managed path the hook is trusted by policy and cannot be switched off by the developer, which is a stronger claim than we can make on Claude Code. `openlatch doctor` proves the hook by **invoking** it rather than by observing that a file exists, and reports the trust state per agent — an untrusted hook is never spawned, and that is the one failure that looks identical to working from the outside.
|
|
86
97
|
|
|
87
98
|
Making an agent **Enforced** is a hook binding plus a verdict translator. Both are contributions we welcome — see [Contributing](#contributing).
|
|
88
99
|
|
|
@@ -92,7 +103,7 @@ Making an agent **Enforced** is a hook binding plus a verdict translator. Both a
|
|
|
92
103
|
|
|
93
104
|
```bash
|
|
94
105
|
openlatch init --proxy http://proxy.corp:8080 --ca-bundle /etc/ssl/corp-root.pem
|
|
95
|
-
openlatch proxy test # walks the chain hop by hop and names the failing one
|
|
106
|
+
openlatch system proxy test # walks the chain hop by hop and names the failing one
|
|
96
107
|
```
|
|
97
108
|
|
|
98
109
|
The hosts to open, every `[proxy]` key and every `OL-122x` code: [docs/egress.md](docs/egress.md).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openlatch/client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "OpenLatch runtime enforcement node — the capture-and-enforce adapter that evaluates every covered action against a coding agent's Autonomy Zone before it runs",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -20,10 +20,10 @@
|
|
|
20
20
|
"postinstall": "node lib/postinstall.js"
|
|
21
21
|
},
|
|
22
22
|
"optionalDependencies": {
|
|
23
|
-
"@openlatch/client-darwin-arm64": "0.
|
|
24
|
-
"@openlatch/client-darwin-x64": "0.
|
|
25
|
-
"@openlatch/client-linux-x64": "0.
|
|
26
|
-
"@openlatch/client-linux-arm64": "0.
|
|
27
|
-
"@openlatch/client-win32-x64": "0.
|
|
23
|
+
"@openlatch/client-darwin-arm64": "0.4.0",
|
|
24
|
+
"@openlatch/client-darwin-x64": "0.4.0",
|
|
25
|
+
"@openlatch/client-linux-x64": "0.4.0",
|
|
26
|
+
"@openlatch/client-linux-arm64": "0.4.0",
|
|
27
|
+
"@openlatch/client-win32-x64": "0.4.0"
|
|
28
28
|
}
|
|
29
29
|
}
|