@darkelogix/openclaw-trusted-mode 1.0.0 → 1.0.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.
package/CHANGELOG.md CHANGED
@@ -10,6 +10,11 @@ Terminology and acronyms: [`GLOSSARY.md`](./GLOSSARY.md).
10
10
  - `CI`: Continuous Integration
11
11
 
12
12
  ## Unreleased
13
+ - Add gateway/environment fields to the published Trusted Mode Check PDP requests so live Guard Pro runtime validation works against quota-aware runtime bundles.
14
+
15
+ ## v1.0.2
16
+ - Publish the gateway/environment-aware Trusted Mode Check flow so governed runtime validation uses the same tenant, gateway, and environment context as the customer runtime.
17
+
13
18
  - Add governed release artifacts (`SECURITY.md`, `RELEASE_v1.0.0.md`, compatibility matrix).
14
19
  - Add Trusted Mode Check attestation status contract (`ENFORCED_OK`, `LOCKDOWN_ONLY`, `UNSAFE`) with JSON output.
15
20
  - Add CI gates for release artifact and changelog version discipline.
package/README.md CHANGED
@@ -1,201 +1,201 @@
1
- # @darkelogix/openclaw-trusted-mode
2
-
3
- Terminology and acronyms: [`GLOSSARY.md`](./GLOSSARY.md).
4
-
5
- ## Acronym Expansions
6
-
7
- - `SDE`: Strategic Decision Engine
8
- - `PDP`: Policy Decision Point
9
- - `WSL`: Windows Subsystem for Linux
10
- - `CI`: Continuous Integration
11
-
12
- OpenClaw plugin that enforces Trusted Mode policy checks on `before_tool_call`.
13
- Documentation index (by audience and task): [`docs/README.md`](./docs/README.md).
14
-
15
- ## npm Package
16
-
17
- Install the public MIT adapter/plugin package with:
18
-
19
- ```bash
20
- npm install @darkelogix/openclaw-trusted-mode
21
- ```
22
-
23
- ## What `npm install` gives you
24
-
25
- `npm install @darkelogix/openclaw-trusted-mode` gives you the MIT adapter/plugin layer and standalone hardening flow only. It does not grant access to the proprietary SDE runtime, enterprise deployment packs, or governed tenant entitlements.
26
-
27
- ## Need governed mode?
28
-
29
- If you want SDE-backed governed mode, obtain your licensed SDE runtime and deployment instructions from the Darkelogix customer console. Use the public npm package for adapter installation, then connect it to your licensed SDE environment for governed authorization, evidence, and rollout controls.
30
-
31
- The npm package contains the MIT plugin files and standalone hardening logic only.
32
- It does not include the proprietary `sde-enterprise` runtime.
33
-
34
- ## Licensing
35
-
36
- `openclaw-trusted-mode` is licensed under the MIT License.
37
-
38
- `sde-enterprise`, including the SDE PDP runtime and related enterprise deployment assets, is proprietary software and is not covered by the plugin's MIT license. Use, copying, modification, distribution, or deployment of the SDE runtime requires a separate commercial license or written permission from Darkelogix.
39
-
40
- First-time setup (download/install/configure/test/run): [`START_HERE.md`](./START_HERE.md).
41
- Troubleshooting decision tree: [`SELF_SERVICE_FAQ.md`](./SELF_SERVICE_FAQ.md).
42
- Org defaults and support metadata: `<org-values-file>`.
43
- One-command setup: `powershell -ExecutionPolicy Bypass -File <bootstrap-self-service-script-path>`.
44
- For full install/reinstall/uninstall/startup/config/troubleshooting guidance across both plugin and SDE-PDP, see [`OPERATIONS_GUIDE.md`](./OPERATIONS_GUIDE.md).
45
- For a simpler operator runbook, see [`RUNBOOK_NON_TECHNICAL.md`](./RUNBOOK_NON_TECHNICAL.md).
46
- For go-live gating, use [`PRODUCTION_READINESS_CHECKLIST.md`](./PRODUCTION_READINESS_CHECKLIST.md).
47
- For a pre-filled starting point, use [`PRODUCTION_READINESS_CHECKLIST_EXAMPLE.md`](./PRODUCTION_READINESS_CHECKLIST_EXAMPLE.md).
48
- For alternate port deployments, use [`PRODUCTION_READINESS_CHECKLIST_EXAMPLE_ALT_PORTS.md`](./PRODUCTION_READINESS_CHECKLIST_EXAMPLE_ALT_PORTS.md).
49
- For public launch readiness, use [`PUBLIC_RELEASE_READINESS_CHECKLIST.md`](./PUBLIC_RELEASE_READINESS_CHECKLIST.md).
50
- For end-to-end public release execution steps (what/where/how), use [`PUBLIC_RELEASE_PROCESS_RUNBOOK.md`](./PUBLIC_RELEASE_PROCESS_RUNBOOK.md).
51
- For certified runtime support status, see [`COMPATIBILITY_MATRIX.md`](./COMPATIBILITY_MATRIX.md).
52
- For vulnerability reporting and security posture, see [`SECURITY.md`](./SECURITY.md).
53
- For release hardening process, see [`RELEASE_OPERATIONS.md`](./RELEASE_OPERATIONS.md).
54
- For security evidence indexing, see [`SECURITY_EVIDENCE_BUNDLE.md`](./SECURITY_EVIDENCE_BUNDLE.md).
55
- For performance baseline evidence, see [`PERFORMANCE_BASELINE.md`](./PERFORMANCE_BASELINE.md).
56
- For governed release declaration, see [`RELEASE_v1.0.0.md`](./RELEASE_v1.0.0.md).
57
-
58
- ## What it does
59
-
60
- - Free standalone mode defaults to local hardening with a minimal allowlist:
61
- - `read_file`
62
- - `list_files`
63
- - `search_files`
64
- - Blocks high-risk tools such as `exec`, file writes/edits, and deletes unless you deliberately widen the policy.
65
- - Sends tool call context to a Policy Decision Point (PDP) endpoint.
66
- - Denies execution when PDP returns a deny decision.
67
- - Optionally enforces returned constraints.
68
- - Supports fail-closed (default) or fail-open behavior.
69
-
70
- ## Free vs Paid
71
-
72
- The product boundary should be explicit at install time:
73
-
74
- - `npm install` gets you the adapter/plugin and standalone hardening path
75
- - governed mode requires a separately licensed SDE deployment
76
- - the customer console is the supported way to obtain governed runtime artifacts and deployment instructions
77
-
78
-
79
- - Free standalone use:
80
- - useful as a local hardening layer
81
- - works without `sde-enterprise`
82
- - best for "read/search only" OpenClaw sessions
83
- - Paid / enterprise use:
84
- - PDP-backed authorization and deny decisions
85
- - signed policy packs
86
- - tenant entitlements and governed rollout
87
- - release attestation and compatibility certification
88
-
89
- ## Build and test
90
-
91
- ```powershell
92
- npm run build
93
- npm test
94
- npm run adversarial-check
95
- npm run performance-benchmark
96
- npm run test-pack-matrix
97
- ```
98
-
99
- ## Trusted Mode Check
100
-
101
- ```bash
102
- npm run trusted-mode-check
103
- npm run trusted-mode-check -- --json
104
- ```
105
-
106
- `trusted-mode-check` is a PDP-backed validation path. It is useful for SDE-integrated deployments, not for standalone free-mode validation.
107
-
108
- JSON output status values:
109
- - `ENFORCED_OK`
110
- - `LOCKDOWN_ONLY`
111
- - `UNSAFE`
112
-
113
- Attestation pack inputs:
114
- - `attestation/trusted_mode_attest_v1.json`
115
- - `attestation/trusted_mode_attest_v1.sig`
116
-
117
- Runtime/certification env vars:
118
- - `CERTIFICATION_STATUS` (`CERTIFIED_ENFORCED` | `LOCKDOWN_ONLY` | `UNSUPPORTED`)
119
- - `OPENCLAW_VERSION`
120
- - `EXPECTED_STATUS` (optional CI assertion override)
121
-
122
- ## Local install in OpenClaw (WSL)
123
-
124
- ```bash
125
- openclaw plugins install /mnt/c/path/to/openclaw-trusted-mode
126
- openclaw plugins info openclaw-trusted-mode
127
- ```
128
-
129
- For a standalone free-mode config, start from [`openclaw.user-config.entry.example.json`](./openclaw.user-config.entry.example.json).
130
-
131
- ## Plugin config
132
-
133
- See [`openclaw.plugin.json`](./openclaw.plugin.json) for config schema and defaults, including:
134
-
135
- - `pdpUrl`
136
- - `policyVariant`
137
- - `pdpTimeoutMs`
138
- - `failClosed`
139
- - `tenantId`
140
- - `certificationStatus`
141
- - `openclawVersion`
142
- - `certifiedOpenClawVersions`
143
- - `highRiskTools`
144
- - `toolPolicyMode`
145
- - `allowedTools`
146
- - `requireTenantId`
147
- - `allowedTenantIds`
148
- - `contextCurator`
149
-
150
- Recommended standalone free-mode baseline:
151
-
152
- ```json
153
- {
154
- "toolPolicyMode": "ALLOWLIST_ONLY",
155
- "allowedTools": ["read_file", "list_files", "search_files"],
156
- "failClosed": true,
157
- "certificationStatus": "LOCKDOWN_ONLY"
158
- }
159
- ```
160
-
161
- Recommended paid / PDP-backed baseline:
162
-
163
- ```json
164
- {
165
- "toolPolicyMode": "PDP",
166
- "pdpUrl": "http://localhost:8001/v1/authorize",
167
- "tenantId": "trial-tenant",
168
- "failClosed": true,
169
- "certificationStatus": "LOCKDOWN_ONLY"
170
- }
171
- ```
172
-
173
- ## Compatibility Matrix Automation
174
-
175
- ```bash
176
- npm run update-compatibility-matrix
177
- npm run verify-compatibility-matrix
178
- ```
179
-
180
- ## Security Gates
181
-
182
- ```bash
183
- npm run collect-security-evidence
184
- npm run generate-security-release-index
185
- npm run verify-security-gates
186
- ```
187
-
188
- ## Schema Contract and Evidence Bundle
189
-
190
- ```bash
191
- npm run verify-plugin-schema-contract
192
- npm run bundle-release-evidence
193
- ```
194
-
195
- ## Startup Health Verification
196
-
197
- ```bash
198
- npm run startup-health-check -- --skip-plugin-check
199
- ```
200
-
201
-
1
+ # @darkelogix/openclaw-trusted-mode
2
+
3
+ Terminology and acronyms: [`GLOSSARY.md`](./GLOSSARY.md).
4
+
5
+ ## Acronym Expansions
6
+
7
+ - `SDE`: Strategic Decision Engine
8
+ - `PDP`: Policy Decision Point
9
+ - `WSL`: Windows Subsystem for Linux
10
+ - `CI`: Continuous Integration
11
+
12
+ OpenClaw plugin that enforces Trusted Mode policy checks on `before_tool_call`.
13
+ Documentation index (by audience and task): [`docs/README.md`](./docs/README.md).
14
+
15
+ ## npm Package
16
+
17
+ Install the public MIT adapter/plugin package with:
18
+
19
+ ```bash
20
+ npm install @darkelogix/openclaw-trusted-mode
21
+ ```
22
+
23
+ ## What `npm install` gives you
24
+
25
+ `npm install @darkelogix/openclaw-trusted-mode` gives you the MIT adapter/plugin layer and standalone hardening flow only. It does not grant access to the proprietary SDE runtime, enterprise deployment packs, or governed tenant entitlements.
26
+
27
+ ## Need governed mode?
28
+
29
+ If you want SDE-backed governed mode, obtain your licensed SDE runtime and deployment instructions from the Darkelogix customer console. Use the public npm package for adapter installation, then connect it to your licensed SDE environment for governed authorization, evidence, and rollout controls.
30
+
31
+ The npm package contains the MIT plugin files and standalone hardening logic only.
32
+ It does not include the proprietary `sde-enterprise` runtime.
33
+
34
+ ## Licensing
35
+
36
+ `openclaw-trusted-mode` is licensed under the MIT License.
37
+
38
+ `sde-enterprise`, including the SDE PDP runtime and related enterprise deployment assets, is proprietary software and is not covered by the plugin's MIT license. Use, copying, modification, distribution, or deployment of the SDE runtime requires a separate commercial license or written permission from Darkelogix.
39
+
40
+ First-time setup (download/install/configure/test/run): [`START_HERE.md`](./START_HERE.md).
41
+ Troubleshooting decision tree: [`SELF_SERVICE_FAQ.md`](./SELF_SERVICE_FAQ.md).
42
+ Org defaults and support metadata: `<org-values-file>`.
43
+ One-command setup: `powershell -ExecutionPolicy Bypass -File <bootstrap-self-service-script-path>`.
44
+ For full install/reinstall/uninstall/startup/config/troubleshooting guidance across both plugin and SDE-PDP, see [`OPERATIONS_GUIDE.md`](./OPERATIONS_GUIDE.md).
45
+ For a simpler operator runbook, see [`RUNBOOK_NON_TECHNICAL.md`](./RUNBOOK_NON_TECHNICAL.md).
46
+ For go-live gating, use [`PRODUCTION_READINESS_CHECKLIST.md`](./PRODUCTION_READINESS_CHECKLIST.md).
47
+ For a pre-filled starting point, use [`PRODUCTION_READINESS_CHECKLIST_EXAMPLE.md`](./PRODUCTION_READINESS_CHECKLIST_EXAMPLE.md).
48
+ For alternate port deployments, use [`PRODUCTION_READINESS_CHECKLIST_EXAMPLE_ALT_PORTS.md`](./PRODUCTION_READINESS_CHECKLIST_EXAMPLE_ALT_PORTS.md).
49
+ For public launch readiness, use [`PUBLIC_RELEASE_READINESS_CHECKLIST.md`](./PUBLIC_RELEASE_READINESS_CHECKLIST.md).
50
+ For end-to-end public release execution steps (what/where/how), use [`PUBLIC_RELEASE_PROCESS_RUNBOOK.md`](./PUBLIC_RELEASE_PROCESS_RUNBOOK.md).
51
+ For certified runtime support status, see [`COMPATIBILITY_MATRIX.md`](./COMPATIBILITY_MATRIX.md).
52
+ For vulnerability reporting and security posture, see [`SECURITY.md`](./SECURITY.md).
53
+ For release hardening process, see [`RELEASE_OPERATIONS.md`](./RELEASE_OPERATIONS.md).
54
+ For security evidence indexing, see [`SECURITY_EVIDENCE_BUNDLE.md`](./SECURITY_EVIDENCE_BUNDLE.md).
55
+ For performance baseline evidence, see [`PERFORMANCE_BASELINE.md`](./PERFORMANCE_BASELINE.md).
56
+ For governed release declaration, see [`RELEASE_v1.0.0.md`](./RELEASE_v1.0.0.md).
57
+
58
+ ## What it does
59
+
60
+ - Free standalone mode defaults to local hardening with a minimal allowlist:
61
+ - `read_file`
62
+ - `list_files`
63
+ - `search_files`
64
+ - Blocks high-risk tools such as `exec`, file writes/edits, and deletes unless you deliberately widen the policy.
65
+ - Sends tool call context to a Policy Decision Point (PDP) endpoint.
66
+ - Denies execution when PDP returns a deny decision.
67
+ - Optionally enforces returned constraints.
68
+ - Supports fail-closed (default) or fail-open behavior.
69
+
70
+ ## Free vs Paid
71
+
72
+ The product boundary should be explicit at install time:
73
+
74
+ - `npm install` gets you the adapter/plugin and standalone hardening path
75
+ - governed mode requires a separately licensed SDE deployment
76
+ - the customer console is the supported way to obtain governed runtime artifacts and deployment instructions
77
+
78
+
79
+ - Free standalone use:
80
+ - useful as a local hardening layer
81
+ - works without `sde-enterprise`
82
+ - best for "read/search only" OpenClaw sessions
83
+ - Paid / enterprise use:
84
+ - PDP-backed authorization and deny decisions
85
+ - signed policy packs
86
+ - tenant entitlements and governed rollout
87
+ - release attestation and compatibility certification
88
+
89
+ ## Build and test
90
+
91
+ ```powershell
92
+ npm run build
93
+ npm test
94
+ npm run adversarial-check
95
+ npm run performance-benchmark
96
+ npm run test-pack-matrix
97
+ ```
98
+
99
+ ## Trusted Mode Check
100
+
101
+ ```bash
102
+ npm run trusted-mode-check
103
+ npm run trusted-mode-check -- --json
104
+ ```
105
+
106
+ `trusted-mode-check` is a PDP-backed validation path. It is useful for SDE-integrated deployments, not for standalone free-mode validation.
107
+
108
+ JSON output status values:
109
+ - `ENFORCED_OK`
110
+ - `LOCKDOWN_ONLY`
111
+ - `UNSAFE`
112
+
113
+ Attestation pack inputs:
114
+ - `attestation/trusted_mode_attest_v1.json`
115
+ - `attestation/trusted_mode_attest_v1.sig`
116
+
117
+ Runtime/certification env vars:
118
+ - `CERTIFICATION_STATUS` (`CERTIFIED_ENFORCED` | `LOCKDOWN_ONLY` | `UNSUPPORTED`)
119
+ - `OPENCLAW_VERSION`
120
+ - `EXPECTED_STATUS` (optional CI assertion override)
121
+
122
+ ## Local install in OpenClaw (WSL)
123
+
124
+ ```bash
125
+ openclaw plugins install /mnt/c/path/to/openclaw-trusted-mode
126
+ openclaw plugins info openclaw-trusted-mode
127
+ ```
128
+
129
+ For a standalone free-mode config, start from [`openclaw.user-config.entry.example.json`](./openclaw.user-config.entry.example.json).
130
+
131
+ ## Plugin config
132
+
133
+ See [`openclaw.plugin.json`](./openclaw.plugin.json) for config schema and defaults, including:
134
+
135
+ - `pdpUrl`
136
+ - `policyVariant`
137
+ - `pdpTimeoutMs`
138
+ - `failClosed`
139
+ - `tenantId`
140
+ - `certificationStatus`
141
+ - `openclawVersion`
142
+ - `certifiedOpenClawVersions`
143
+ - `highRiskTools`
144
+ - `toolPolicyMode`
145
+ - `allowedTools`
146
+ - `requireTenantId`
147
+ - `allowedTenantIds`
148
+ - `contextCurator`
149
+
150
+ Recommended standalone free-mode baseline:
151
+
152
+ ```json
153
+ {
154
+ "toolPolicyMode": "ALLOWLIST_ONLY",
155
+ "allowedTools": ["read_file", "list_files", "search_files"],
156
+ "failClosed": true,
157
+ "certificationStatus": "LOCKDOWN_ONLY"
158
+ }
159
+ ```
160
+
161
+ Recommended paid / PDP-backed baseline:
162
+
163
+ ```json
164
+ {
165
+ "toolPolicyMode": "PDP",
166
+ "pdpUrl": "http://localhost:8001/v1/authorize",
167
+ "tenantId": "trial-tenant",
168
+ "failClosed": true,
169
+ "certificationStatus": "LOCKDOWN_ONLY"
170
+ }
171
+ ```
172
+
173
+ ## Compatibility Matrix Automation
174
+
175
+ ```bash
176
+ npm run update-compatibility-matrix
177
+ npm run verify-compatibility-matrix
178
+ ```
179
+
180
+ ## Security Gates
181
+
182
+ ```bash
183
+ npm run collect-security-evidence
184
+ npm run generate-security-release-index
185
+ npm run verify-security-gates
186
+ ```
187
+
188
+ ## Schema Contract and Evidence Bundle
189
+
190
+ ```bash
191
+ npm run verify-plugin-schema-contract
192
+ npm run bundle-release-evidence
193
+ ```
194
+
195
+ ## Startup Health Verification
196
+
197
+ ```bash
198
+ npm run startup-health-check -- --skip-plugin-check
199
+ ```
200
+
201
+
@@ -1,151 +1,151 @@
1
- # Self-Service FAQ
2
-
3
- Terminology and acronyms: [`GLOSSARY.md`](./GLOSSARY.md).
4
-
5
- ## Acronym Expansions
6
-
7
- - `SDE`: Strategic Decision Engine
8
- - `PDP`: Policy Decision Point
9
- - `CLI`: Command Line Interface
10
- - `FQDN`: Fully Qualified Domain Name
11
- - `SKU`: Stock Keeping Unit
12
- - `WSL`: Windows Subsystem for Linux
13
-
14
- ## 1) `openclaw` command not found
15
-
16
- Install OpenClaw CLI and verify:
17
-
18
- ```powershell
19
- openclaw --version
20
- ```
21
-
22
- If still not found:
23
-
24
- 1. Confirm CLI install location is on PATH.
25
- 2. Open a new terminal and retry.
26
-
27
- ## 2) PDP health check fails
28
-
29
- If you are using the free standalone plugin mode, you can ignore this section. PDP is required only for SDE-backed governed mode.
30
-
31
- 1. Start/restart PDP:
32
-
33
- ```powershell
34
- Set-Location <sde-enterprise-path>
35
- docker compose -f ops/docker-compose.pdp.yml up --build -d
36
- ```
37
-
38
- 2. Retry health:
39
-
40
- ```powershell
41
- curl -s http://localhost:8001/healthz
42
- ```
43
-
44
- Expected: `{"status":"ok"}`.
45
-
46
- If not:
47
-
48
- - Check container status: `docker ps`
49
- - Check PDP logs: `docker compose -f ops/docker-compose.pdp.yml logs`
50
-
51
- ## 3) Plugin not loaded
52
-
53
- ```powershell
54
- Set-Location <openclaw-trusted-mode-path>
55
- npm install
56
- npm run build
57
- openclaw plugins install <openclaw-trusted-mode-path> --no-color
58
- openclaw plugins info openclaw-trusted-mode --no-color
59
- ```
60
-
61
- Expected: plugin status is `loaded`.
62
-
63
- If not loaded:
64
-
65
- 1. Confirm plugin ID matches `openclaw-trusted-mode`.
66
- 2. Reinstall plugin and restart OpenClaw gateway.
67
-
68
- ## 4) Actions are allowed when they should be denied
69
-
70
- If you are using standalone free mode, check these first:
71
-
72
- 1. Confirm `toolPolicyMode` is `ALLOWLIST_ONLY`.
73
- 2. Confirm the blocked tool is not present in `allowedTools`.
74
- 3. For shell execution, verify the runtime tool name is `exec`.
75
-
76
- Run SDE smoke test:
77
-
78
- ```powershell
79
- Set-Location <sde-enterprise-path>
80
- powershell -ExecutionPolicy Bypass -File scripts\first_success_smoke.ps1
81
- ```
82
-
83
- Then verify:
84
-
85
- 1. Active policy pack includes exact runtime tool key.
86
- 2. Tenant variant mapping points to intended variant.
87
- 3. Entitlement and tenant ID are correct.
88
-
89
- ## 5) `[Trusted Mode BLOCKED] fetch failed`
90
-
91
- Meaning: plugin cannot reach PDP.
92
-
93
- If you intended to use the free standalone plugin only, switch to:
94
-
95
- - `toolPolicyMode = ALLOWLIST_ONLY`
96
- - a non-empty `allowedTools` list
97
-
98
- That removes the PDP dependency.
99
-
100
- Check in order:
101
-
102
- 1. PDP is running and healthy.
103
- 2. Plugin `pdpUrl` points to reachable host/port.
104
- 3. If using WSL, test `host.docker.internal` endpoint.
105
- 4. Keep `failClosed=true` in production.
106
-
107
- ## 6) License endpoint or support placeholders are unresolved
108
-
109
- Define and verify the values from `START_HERE.md` section "Remaining org-specific values to fill once":
110
-
111
- 1. License server FQDN.
112
- 2. Support contacts and escalation channel.
113
- 3. Artifact/registry coordinates used by your deployment.
114
-
115
- After setting values:
116
-
117
- 1. Re-run licensing/activation check (`sde-cli license status`).
118
- 2. Re-run pilot or production readiness checklist.
119
-
120
- ## 7) `ENTITLEMENT_DENIED` for expected active tenant
121
-
122
- 1. Inspect `ops/entitlements.json` for exact tenant key and SKU.
123
- 2. Confirm request `tenant_id` matches exactly.
124
- 3. Restart PDP after file changes.
125
- 4. Re-test with:
126
-
127
- ```powershell
128
- Set-Location <sde-enterprise-path>
129
- python ops\pdp_admin_cli.py authorize-test --tenant-id <tenant_id> --tool-name read_file --gateway-id gw-1 --environment prod
130
- ```
131
-
132
- ## 8) Policy pack signature verification errors
133
-
134
- 1. Confirm both files exist for active variant:
135
- - `<variant>.json`
136
- - `<variant>.sig`
137
- 2. Validate with:
138
-
139
- ```powershell
140
- Set-Location <sde-enterprise-path>
141
- python ops\pdp_admin_cli.py validate-policy-pack --variant <variant>
142
- ```
143
-
144
- 3. If validation fails, restore known-good signed pair and restart PDP.
145
-
146
- ## 9) Where to go next
147
-
148
- - First-time setup: `START_HERE.md`
149
- - Detailed operations: `OPERATIONS_GUIDE.md`
150
- - Non-technical operations: `RUNBOOK_NON_TECHNICAL.md`
151
- - Governance controls: `<sde-enterprise-path>\docs\governance_control_plane.md`
1
+ # Self-Service FAQ
2
+
3
+ Terminology and acronyms: [`GLOSSARY.md`](./GLOSSARY.md).
4
+
5
+ ## Acronym Expansions
6
+
7
+ - `SDE`: Strategic Decision Engine
8
+ - `PDP`: Policy Decision Point
9
+ - `CLI`: Command Line Interface
10
+ - `FQDN`: Fully Qualified Domain Name
11
+ - `SKU`: Stock Keeping Unit
12
+ - `WSL`: Windows Subsystem for Linux
13
+
14
+ ## 1) `openclaw` command not found
15
+
16
+ Install OpenClaw CLI and verify:
17
+
18
+ ```powershell
19
+ openclaw --version
20
+ ```
21
+
22
+ If still not found:
23
+
24
+ 1. Confirm CLI install location is on PATH.
25
+ 2. Open a new terminal and retry.
26
+
27
+ ## 2) PDP health check fails
28
+
29
+ If you are using the free standalone plugin mode, you can ignore this section. PDP is required only for SDE-backed governed mode.
30
+
31
+ 1. Start/restart PDP:
32
+
33
+ ```powershell
34
+ Set-Location <sde-enterprise-path>
35
+ docker compose -f ops/docker-compose.pdp.yml up --build -d
36
+ ```
37
+
38
+ 2. Retry health:
39
+
40
+ ```powershell
41
+ curl -s http://localhost:8001/healthz
42
+ ```
43
+
44
+ Expected: `{"status":"ok"}`.
45
+
46
+ If not:
47
+
48
+ - Check container status: `docker ps`
49
+ - Check PDP logs: `docker compose -f ops/docker-compose.pdp.yml logs`
50
+
51
+ ## 3) Plugin not loaded
52
+
53
+ ```powershell
54
+ Set-Location <openclaw-trusted-mode-path>
55
+ npm install
56
+ npm run build
57
+ openclaw plugins install <openclaw-trusted-mode-path> --no-color
58
+ openclaw plugins info openclaw-trusted-mode --no-color
59
+ ```
60
+
61
+ Expected: plugin status is `loaded`.
62
+
63
+ If not loaded:
64
+
65
+ 1. Confirm plugin ID matches `openclaw-trusted-mode`.
66
+ 2. Reinstall plugin and restart OpenClaw gateway.
67
+
68
+ ## 4) Actions are allowed when they should be denied
69
+
70
+ If you are using standalone free mode, check these first:
71
+
72
+ 1. Confirm `toolPolicyMode` is `ALLOWLIST_ONLY`.
73
+ 2. Confirm the blocked tool is not present in `allowedTools`.
74
+ 3. For shell execution, verify the runtime tool name is `exec`.
75
+
76
+ Run SDE smoke test:
77
+
78
+ ```powershell
79
+ Set-Location <sde-enterprise-path>
80
+ powershell -ExecutionPolicy Bypass -File scripts\first_success_smoke.ps1
81
+ ```
82
+
83
+ Then verify:
84
+
85
+ 1. Active policy pack includes exact runtime tool key.
86
+ 2. Tenant variant mapping points to intended variant.
87
+ 3. Entitlement and tenant ID are correct.
88
+
89
+ ## 5) `[Trusted Mode BLOCKED] fetch failed`
90
+
91
+ Meaning: plugin cannot reach PDP.
92
+
93
+ If you intended to use the free standalone plugin only, switch to:
94
+
95
+ - `toolPolicyMode = ALLOWLIST_ONLY`
96
+ - a non-empty `allowedTools` list
97
+
98
+ That removes the PDP dependency.
99
+
100
+ Check in order:
101
+
102
+ 1. PDP is running and healthy.
103
+ 2. Plugin `pdpUrl` points to reachable host/port.
104
+ 3. If using WSL, test `host.docker.internal` endpoint.
105
+ 4. Keep `failClosed=true` in production.
106
+
107
+ ## 6) License endpoint or support placeholders are unresolved
108
+
109
+ Define and verify the values from `START_HERE.md` section "Remaining org-specific values to fill once":
110
+
111
+ 1. License server FQDN.
112
+ 2. Support contacts and escalation channel.
113
+ 3. Artifact/registry coordinates used by your deployment.
114
+
115
+ After setting values:
116
+
117
+ 1. Re-run licensing/activation check (`sde-cli license status`).
118
+ 2. Re-run pilot or production readiness checklist.
119
+
120
+ ## 7) `ENTITLEMENT_DENIED` for expected active tenant
121
+
122
+ 1. Inspect `ops/entitlements.json` for exact tenant key and SKU.
123
+ 2. Confirm request `tenant_id` matches exactly.
124
+ 3. Restart PDP after file changes.
125
+ 4. Re-test with:
126
+
127
+ ```powershell
128
+ Set-Location <sde-enterprise-path>
129
+ python ops\pdp_admin_cli.py authorize-test --tenant-id <tenant_id> --tool-name read_file --gateway-id gw-1 --environment prod
130
+ ```
131
+
132
+ ## 8) Policy pack signature verification errors
133
+
134
+ 1. Confirm both files exist for active variant:
135
+ - `<variant>.json`
136
+ - `<variant>.sig`
137
+ 2. Validate with:
138
+
139
+ ```powershell
140
+ Set-Location <sde-enterprise-path>
141
+ python ops\pdp_admin_cli.py validate-policy-pack --variant <variant>
142
+ ```
143
+
144
+ 3. If validation fails, restore known-good signed pair and restart PDP.
145
+
146
+ ## 9) Where to go next
147
+
148
+ - First-time setup: `START_HERE.md`
149
+ - Detailed operations: `OPERATIONS_GUIDE.md`
150
+ - Non-technical operations: `RUNBOOK_NON_TECHNICAL.md`
151
+ - Governance controls: `<sde-enterprise-path>\docs\governance_control_plane.md`
package/dist/cli.js CHANGED
@@ -9,6 +9,8 @@ const packageVersion_1 = require("./packageVersion");
9
9
  const PDP_URL = process.env.PDP_URL || 'http://localhost:8001/v1/authorize';
10
10
  const POLICY_VARIANT = process.env.POLICY_VARIANT || 'guard-pro.v2026.02';
11
11
  const TENANT_ID = process.env.TENANT_ID || 'trial-tenant';
12
+ const GATEWAY_ID = process.env.GATEWAY_ID || process.env.OPENCLAW_GATEWAY_ID || 'gw-smoke-1';
13
+ const ENVIRONMENT = process.env.ENVIRONMENT || process.env.OPENCLAW_ENVIRONMENT || 'prod';
12
14
  const OPENCLAW_VERSION = (0, packageVersion_1.resolveOpenClawVersion)();
13
15
  const RUNTIME_CERTIFICATION_STATUS = (0, runtimeCertification_1.normalizeRuntimeCertificationStatus)(process.env.CERTIFICATION_STATUS || 'CERTIFIED_ENFORCED');
14
16
  const JSON_MODE = process.argv.includes('--json');
@@ -35,6 +37,8 @@ async function testDenyHighImpact() {
35
37
  decision_sku: 'openclaw.trusted_mode.authorize.v1',
36
38
  policy_variant: POLICY_VARIANT,
37
39
  tenant_id: TENANT_ID,
40
+ gateway_id: GATEWAY_ID,
41
+ environment: ENVIRONMENT,
38
42
  inputs: { action_request: { tool_name: 'exec', params: {} } },
39
43
  };
40
44
  try {
@@ -58,6 +62,8 @@ async function testAllowLowImpact() {
58
62
  decision_sku: 'openclaw.trusted_mode.authorize.v1',
59
63
  policy_variant: POLICY_VARIANT,
60
64
  tenant_id: TENANT_ID,
65
+ gateway_id: GATEWAY_ID,
66
+ environment: ENVIRONMENT,
61
67
  inputs: { action_request: { tool_name: 'read_file', params: {} } },
62
68
  };
63
69
  try {
@@ -78,6 +84,8 @@ async function testSignatureFailure() {
78
84
  decision_sku: 'openclaw.trusted_mode.authorize.v1',
79
85
  policy_variant: 'invalid-pack',
80
86
  tenant_id: TENANT_ID,
87
+ gateway_id: GATEWAY_ID,
88
+ environment: ENVIRONMENT,
81
89
  inputs: { action_request: { tool_name: 'exec', params: {} } },
82
90
  };
83
91
  try {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@darkelogix/openclaw-trusted-mode",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "MIT-licensed OpenClaw Trusted Mode plugin with standalone hardening and optional SDE-backed governance",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",