@f4bioo/berry-shield 2026.3.3-1

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 (52) hide show
  1. package/CONTRIBUTING.md +32 -0
  2. package/LICENSE +201 -0
  3. package/README.md +251 -0
  4. package/SECURITY_AUDIT.md +96 -0
  5. package/docs/wiki/README.md +108 -0
  6. package/docs/wiki/decision/README.md +48 -0
  7. package/docs/wiki/decision/modes.md +176 -0
  8. package/docs/wiki/decision/patterns.md +137 -0
  9. package/docs/wiki/decision/posture.md +68 -0
  10. package/docs/wiki/deploy/README.md +51 -0
  11. package/docs/wiki/deploy/auditing.md +56 -0
  12. package/docs/wiki/deploy/build.md +92 -0
  13. package/docs/wiki/deploy/github-ci-cd.md +107 -0
  14. package/docs/wiki/deploy/installation.md +348 -0
  15. package/docs/wiki/engine/README.md +53 -0
  16. package/docs/wiki/engine/match-engine.md +91 -0
  17. package/docs/wiki/engine/performance.md +114 -0
  18. package/docs/wiki/engine/redaction.md +120 -0
  19. package/docs/wiki/layers/README.md +68 -0
  20. package/docs/wiki/layers/leaf.md +126 -0
  21. package/docs/wiki/layers/pulp.md +139 -0
  22. package/docs/wiki/layers/root.md +130 -0
  23. package/docs/wiki/layers/stem.md +139 -0
  24. package/docs/wiki/layers/thorn.md +139 -0
  25. package/docs/wiki/layers/vine.md +154 -0
  26. package/docs/wiki/operation/README.md +31 -0
  27. package/docs/wiki/operation/cli/README.md +122 -0
  28. package/docs/wiki/operation/cli/add.md +157 -0
  29. package/docs/wiki/operation/cli/help.md +83 -0
  30. package/docs/wiki/operation/cli/init.md +52 -0
  31. package/docs/wiki/operation/cli/list.md +78 -0
  32. package/docs/wiki/operation/cli/mode.md +93 -0
  33. package/docs/wiki/operation/cli/policy.md +202 -0
  34. package/docs/wiki/operation/cli/profile.md +98 -0
  35. package/docs/wiki/operation/cli/remove.md +96 -0
  36. package/docs/wiki/operation/cli/report.md +66 -0
  37. package/docs/wiki/operation/cli/reset.md +99 -0
  38. package/docs/wiki/operation/cli/rules.md +161 -0
  39. package/docs/wiki/operation/cli/status.md +103 -0
  40. package/docs/wiki/operation/cli/test.md +119 -0
  41. package/docs/wiki/operation/cli/toggle.md +90 -0
  42. package/docs/wiki/operation/cli/vine.md +193 -0
  43. package/docs/wiki/operation/web/README.md +27 -0
  44. package/docs/wiki/tutorials/README.md +40 -0
  45. package/docs/wiki/tutorials/audit-to-enforce-rollout.md +99 -0
  46. package/docs/wiki/tutorials/build-custom-rules.md +99 -0
  47. package/docs/wiki/tutorials/choose-profile.md +91 -0
  48. package/docs/wiki/tutorials/incident-triage-report.md +99 -0
  49. package/docs/wiki/tutorials/secure-session.md +115 -0
  50. package/docs/wiki/tutorials/tune-policy.md +111 -0
  51. package/openclaw.plugin.json +293 -0
  52. package/package.json +70 -0
@@ -0,0 +1,139 @@
1
+ ---
2
+ summary: "Layer reference for Berry.Stem (security gate tool for exec/read/write decisions)"
3
+ read_when:
4
+ - You need to understand how pre-operation deny/allow decisions are made
5
+ - You are validating audit vs enforce behavior on operation checks
6
+ - You are debugging why an operation was denied or allowed
7
+ title: "stem"
8
+ ---
9
+
10
+ # `Berry.Stem`
11
+
12
+ Berry.Stem is the **security gate tool layer**.
13
+
14
+ It registers the gate tool used by the agent before risky operations.
15
+ The tool evaluates operation intent (exec, read, write) against destructive-command and sensitive-file patterns.
16
+
17
+ ## What Stem does
18
+
19
+ - Registers the gate tool for operation checks.
20
+ - Validates tool input schema (operation + target + optional session key).
21
+ - Evaluates:
22
+ - destructive command intent in exec requests
23
+ - sensitive file references in exec requests
24
+ - sensitive file access in read/write requests
25
+ - Emits structured audit events in both audit and enforce paths.
26
+ - Returns allow/deny response payloads to the agent.
27
+ - Triggers adaptive escalation signaling on enforce denies.
28
+
29
+ ## What Stem does not do
30
+
31
+ - It does not directly execute shell or file operations.
32
+ - It does not redact output text.
33
+ - It does not depend on before_tool_call hook availability.
34
+ - It does not guarantee model compliance by itself; it provides gate decisions the model should follow.
35
+
36
+ ## Runtime flow
37
+
38
+ ```mermaid
39
+ flowchart TD
40
+ A[Agent requests gate check] --> B[Berry.Stem]
41
+ B --> C{Input valid?}
42
+ C -->|No| E[Reject request]
43
+ C -->|Yes| D{Risk match?}
44
+ D -->|No| ALLOW[Return ALLOWED]
45
+ D -->|Yes + audit| WB[Emit would_block event]
46
+ D -->|Yes + enforce| DENY[Return DENIED + blocked event]
47
+ WB --> ALLOW
48
+ DENY --> ESC[Adaptive escalation signal]
49
+ ```
50
+
51
+ ## Decision inputs
52
+
53
+ Stem consumes:
54
+ - operation type (exec, read, write)
55
+ - target string (command or file path)
56
+ - optional session key for adaptive escalation binding
57
+ - effective sensitive/destructive pattern sets (built-in + custom)
58
+ - runtime mode (audit or enforce)
59
+
60
+ ## Decision behavior (high level)
61
+
62
+ ### Exec operation
63
+ - checks destructive command patterns
64
+ - checks sensitive file references inside command target
65
+ - audit: records observation and returns allow path
66
+ - enforce: records blocked decision and returns denied response
67
+
68
+ ### Read or write operation
69
+ - checks sensitive file patterns against target path
70
+ - audit: records observation and returns allow path
71
+ - enforce: records blocked decision and returns denied response
72
+
73
+ ### Adaptive escalation signal
74
+ - on enforce deny, signals policy runtime state
75
+ - prefers session-scoped escalation when session key exists
76
+ - can use configured global escalation fallback when session key is missing
77
+
78
+ ## How Stem interacts with other layers
79
+
80
+ ### With Root
81
+ - Root injects policy guidance that instructs the agent to call the gate tool first.
82
+ - Stem returns concrete allow/deny decisions.
83
+ - Root improves calling discipline; Stem provides operational gate outcomes.
84
+
85
+ ### With Thorn
86
+ - Thorn can block direct tool calls via hook path where available.
87
+ - Stem remains valuable as a tool-level gate even when hook coverage varies.
88
+
89
+ ### With Pulp
90
+ - Stem controls operation permission before execution.
91
+ - Pulp controls output sanitation after content exists.
92
+
93
+ ### With Leaf
94
+ - Leaf provides inbound sensitive-input observability.
95
+ - Stem provides operation-time gate decisions.
96
+
97
+ ## Operational value
98
+
99
+ Stem is useful for:
100
+ - pre-operation control independent of hook wiring variability
101
+ - deterministic deny messages for risky operations
102
+ - unified gate behavior for exec/read/write checks
103
+ - adaptive policy escalation signals tied to denied actions
104
+
105
+ ## Limits and caveats
106
+
107
+ - Gate effectiveness depends on the agent actually calling the gate tool before operation attempts.
108
+ - Pattern matching is heuristic; coverage quality depends on pattern sets.
109
+ - Command-string analysis may miss some complex indirect execution forms.
110
+ - Enforce/audit behavior must be interpreted together with runtime mode and policy profile.
111
+
112
+ ## Validation checklist
113
+
114
+ 1. Run gate check for benign target and confirm ALLOWED response.
115
+ 2. Run gate check for sensitive read target and confirm:
116
+ - enforce: denied path
117
+ - audit: observation event + allow path
118
+ 3. Run gate check for destructive exec target and confirm mode-specific outcome.
119
+ 4. Validate report output reflects expected blocked/observation counts.
120
+
121
+ ## See layers
122
+
123
+ - [root](root.md)
124
+ - [thorn](thorn.md)
125
+ - [pulp](pulp.md)
126
+ - [leaf](leaf.md)
127
+
128
+ ## Related pages
129
+ - [layers index](README.md)
130
+ - [decision modes](../decision/modes.md)
131
+ - [decision patterns](../decision/patterns.md)
132
+ - [CLI test](../operation/cli/test.md)
133
+ - [CLI report](../operation/cli/report.md)
134
+
135
+ ---
136
+
137
+ ## Navigation
138
+ - [Back to Layers Index](README.md)
139
+ - [Back to Wiki Index](../README.md)
@@ -0,0 +1,139 @@
1
+ ---
2
+ summary: "Layer reference for Berry.Thorn (pre-tool-call interception and blocking when hook is available)"
3
+ read_when:
4
+ - You need to understand hook-level blocking behavior
5
+ - You are validating runtime interception before tool execution
6
+ - You are debugging blockReason results from tool-call interception
7
+ title: "thorn"
8
+ ---
9
+
10
+ # `Berry.Thorn`
11
+
12
+ Berry.Thorn is the **hook-level tool blocker layer**.
13
+
14
+ It intercepts tool calls before execution and evaluates command/path intent against risk patterns.
15
+ When risk is detected, behavior depends on runtime mode.
16
+
17
+ ## What Thorn does
18
+
19
+ - Hooks into before_tool_call.
20
+ - Extracts command candidates from tool params for execution-like calls.
21
+ - Extracts file path candidates from tool params for file-like calls.
22
+ - Matches candidates against destructive-command and sensitive-file patterns.
23
+ - Emits structured audit events in both audit and enforce paths.
24
+ - In enforce, can return block response with block reason.
25
+ - Signals adaptive escalation on enforce denies.
26
+
27
+ ## What Thorn does not do
28
+
29
+ - It does not execute tools.
30
+ - It does not redact output content.
31
+ - It does not replace the gate tool path from Stem.
32
+ - It is only effective when before_tool_call is available/invoked in host runtime.
33
+
34
+ ## Runtime flow
35
+
36
+ ```mermaid
37
+ flowchart TD
38
+ A[Tool call attempt] --> H[Hook: before_tool_call]
39
+ H --> T[Berry.Thorn]
40
+ T --> X{Candidate extracted?}
41
+ X -->|No| PASS[Allow call path]
42
+ X -->|Yes| M{Risk match?}
43
+ M -->|No| PASS
44
+ M -->|Yes + audit| WB[Emit would_block event]
45
+ M -->|Yes + enforce| BLK[Return block + blocked event]
46
+ WB --> PASS
47
+ BLK --> ESC[Adaptive escalation signal]
48
+ ```
49
+
50
+ ## Decision inputs
51
+
52
+ Thorn consumes:
53
+ - tool name
54
+ - tool params payload
55
+ - optional session key from hook context
56
+ - effective destructive and sensitive-file pattern sets
57
+ - runtime mode (audit or enforce)
58
+
59
+ ## Decision behavior (high level)
60
+
61
+ ### Destructive command path
62
+ - command candidate extracted from known command fields
63
+ - if destructive pattern match:
64
+ - audit: record observation and allow path
65
+ - enforce: return block response with security reason
66
+
67
+ ### Sensitive file reference in command path
68
+ - command text also checked for sensitive file references
69
+ - same audit/enforce split as above
70
+
71
+ ### Sensitive file access path
72
+ - file path candidate extracted for file-like tools
73
+ - if sensitive path match:
74
+ - audit: record observation and allow path
75
+ - enforce: return block response with security reason
76
+
77
+ ### Adaptive escalation signal
78
+ - on enforce block, sends denied signal to policy runtime state
79
+ - prefers session-scoped escalation when session key exists
80
+ - optional configured global escalation fallback when session key is missing
81
+
82
+ ## How Thorn interacts with other layers
83
+
84
+ ### With Stem
85
+ - Thorn is hook-based interception.
86
+ - Stem is tool-based security gate.
87
+ - They are complementary: Stem covers gate-tool path even if hook coverage varies.
88
+
89
+ ### With Root
90
+ - Root guides model behavior to call gate checks early.
91
+ - Thorn enforces at interception point when hook fires.
92
+
93
+ ### With Pulp
94
+ - Thorn can stop risky execution paths before tool run.
95
+ - Pulp sanitizes content on output-side paths.
96
+
97
+ ### With Leaf
98
+ - Leaf provides incoming-message observability.
99
+ - Thorn provides pre-execution interception signals.
100
+
101
+ ## Operational value
102
+
103
+ Thorn is useful for:
104
+ - hard stop behavior on risky tool calls where host hook is active
105
+ - consistent block reason payloads for agent/tool feedback
106
+ - capturing pre-execution blocked telemetry for report/audit analysis
107
+
108
+ ## Limits and caveats
109
+
110
+ - Hook availability/invocation depends on host runtime behavior.
111
+ - Candidate extraction relies on known param keys and tool-name heuristics.
112
+ - Complex/obfuscated command forms may reduce detection quality.
113
+ - Should be operated together with Stem for stronger coverage.
114
+
115
+ ## Validation checklist
116
+
117
+ 1. Trigger file-tool call with sensitive path and confirm mode-specific outcome.
118
+ 2. Trigger exec-tool call with destructive command and confirm block behavior in enforce.
119
+ 3. Switch to audit and confirm same inputs emit observation events without hard block.
120
+ 4. Confirm report reflects expected blocked or observation counts.
121
+
122
+ ## See layers
123
+
124
+ - [root](root.md)
125
+ - [stem](stem.md)
126
+ - [pulp](pulp.md)
127
+ - [leaf](leaf.md)
128
+
129
+ ## Related pages
130
+ - [layers index](README.md)
131
+ - [decision modes](../decision/modes.md)
132
+ - [decision patterns](../decision/patterns.md)
133
+ - [decision posture](../decision/posture.md)
134
+
135
+ ---
136
+
137
+ ## Navigation
138
+ - [Back to Layers Index](README.md)
139
+ - [Back to Wiki Index](../README.md)
@@ -0,0 +1,154 @@
1
+ ---
2
+ summary: "Layer reference for Berry.Vine (external-content trust guard and prompt-injection hardening)"
3
+ read_when:
4
+ - You need to understand how Berry handles untrusted external content
5
+ - You are validating external-signal blocking behavior in audit/enforce
6
+ - You are tuning false positives around unknown-origin content
7
+ title: "vine"
8
+ ---
9
+
10
+ # `Berry.Vine`
11
+
12
+ Berry.Vine is the **external-content trust guard layer**.
13
+
14
+ It reduces prompt-injection risk by treating external content as untrusted by default and enforcing trust-aware checks before sensitive operations.
15
+
16
+ ## What Vine does
17
+
18
+ - Tracks external-risk signals per session.
19
+ - Marks risk when external-ingestion tool paths are observed.
20
+ - Guards sensitive actions in `before_tool_call` when risk is active.
21
+ - Applies different behavior in `audit` and `enforce`.
22
+ - Adds a short context reminder in `before_agent_start` only when needed (throttled).
23
+ - Clears session state on `session_end`.
24
+
25
+ ## What Vine does not do
26
+
27
+ - It does not guarantee complete prevention of all prompt-injection techniques.
28
+ - It does not replace Stem/Thorn/Pulp controls.
29
+ - It does not rely on semantic AI classification.
30
+ - It does not auto-remediate without explicit operator action.
31
+
32
+ ## Runtime flow
33
+
34
+ ```mermaid
35
+ flowchart TD
36
+ EXT[External tool/content signal] --> AT[Hook: after_tool_call]
37
+ AT --> STATE[Vine risk state per session]
38
+ STATE --> BT[Hook: before_tool_call]
39
+ BT --> DEC{Sensitive action + risk?}
40
+ DEC -->|No| ALLOW[Allow path]
41
+ DEC -->|Yes + audit| WB[Emit would_block]
42
+ DEC -->|Yes + enforce| BLOCK[Block action]
43
+ STATE --> BAS[Hook: before_agent_start]
44
+ BAS --> REM[Inject short untrusted-content reminder]
45
+ ```
46
+
47
+ ## Trust labels and policy intent
48
+
49
+ Vine tracks origin trust labels as runtime signals:
50
+ - `trusted_user`
51
+ - `external_untrusted`
52
+ - `system_internal`
53
+ - `unknown`
54
+
55
+ Key operational rule:
56
+ - User-origin message does not automatically mean instruction trust.
57
+ - External payload and copied third-party instructions remain untrusted until confirmed by user intent.
58
+
59
+ ## Mode behavior
60
+
61
+ ### Enforce
62
+ - Sensitive actions under active external risk can be blocked.
63
+ - In strict profile, unknown-origin sensitive attempts can also block.
64
+
65
+ ### Audit
66
+ - No hard block.
67
+ - Emits `would_block` events for tuning and validation.
68
+
69
+ ## Interaction with other layers
70
+
71
+ ### With Root
72
+ - Vine can add short trust reminders at turn start.
73
+ - Root still owns global policy injection strategy (full/short/none).
74
+
75
+ ### With Stem and Thorn
76
+ - Stem/Thorn remain execution gates.
77
+ - Vine adds trust-origin context so risky instructions from external content are less likely to pass.
78
+
79
+ ### With Pulp
80
+ - Pulp sanitizes output content.
81
+ - Vine focuses on trust of instruction origin before sensitive actions.
82
+
83
+ ## Operational value
84
+
85
+ Vine is useful for:
86
+ - browser/email/webhook-heavy workflows
87
+ - reducing "execute what this page says" risk
88
+ - introducing trust-aware controls without replacing existing rule engine
89
+
90
+
91
+ ## Real-world examples
92
+
93
+ ### Case: external page tells the agent to run a command
94
+ - If the page is ingested through an external tool path observed by Vine, session risk is marked.
95
+ - A later sensitive write-like or destructive action is guarded.
96
+ - In `audit`, Vine records `would_block`.
97
+ - In enforce, Vine can block and report a blocked decision event.
98
+
99
+ ### Case: user pastes external text manually
100
+ - Vine may classify this as `unknown` instead of `external_untrusted`.
101
+ - Behavior depends on Vine mode:
102
+ - `balanced`: tends to observe and escalate carefully.
103
+ - `strict`: can block unknown-origin sensitive attempts.
104
+
105
+ ### Case: no sensitive action follows
106
+ - Vine does not block "just for reading".
107
+ - Guarding happens when a sensitive action is attempted.
108
+
109
+ ## Threat-model boundaries
110
+
111
+ Vine is focused on instruction-origin trust before sensitive actions. It does not replace:
112
+ - Pulp for output redaction and leak minimization.
113
+ - Stem/Thorn for broader execution gates.
114
+ - Host/runtime sandboxing and OS-level isolation.
115
+
116
+ ## Runtime validation principles
117
+
118
+ Vine validation is a runtime behavior check, not an exploit demonstration.
119
+
120
+ Use this principle:
121
+ - run normal agent/tool workflows that include external-content ingestion;
122
+ - let Berry observe and decide during regular execution flow;
123
+ - verify evidence in structured outcomes (`would_block` in `audit`, active mitigation decision in `enforce`) through report/log telemetry.
124
+
125
+ Important scope:
126
+ - this validation assumes operator-guided execution in a real OpenClaw runtime;
127
+ - the objective is to confirm decision posture and traceability, not to publish bypass or injection recipes.
128
+
129
+ ## Limits and caveats
130
+
131
+ - Hook timing and availability still depend on host runtime behavior.
132
+ - Unknown-origin classification can create false positives if over-tuned.
133
+ - Risk decay should not depend only on elapsed time.
134
+
135
+ ## See layers
136
+
137
+ - [root](root.md)
138
+ - [stem](stem.md)
139
+ - [thorn](thorn.md)
140
+ - [pulp](pulp.md)
141
+ - [leaf](leaf.md)
142
+
143
+ ## Related pages
144
+ - [layers index](README.md)
145
+ - [decision modes](../decision/modes.md)
146
+ - [decision patterns](../decision/patterns.md)
147
+ - [decision posture](../decision/posture.md)
148
+ - [CLI status](../operation/cli/status.md)
149
+
150
+ ---
151
+
152
+ ## Navigation
153
+ - [Back to Layers Index](README.md)
154
+ - [Back to Wiki Index](../README.md)
@@ -0,0 +1,31 @@
1
+ ---
2
+ summary: "Operation reference index for Berry Shield interaction surfaces"
3
+ read_when:
4
+ - Adding or changing operation docs for CLI or Web
5
+ - Reviewing user-facing operation guidance
6
+ title: "Operation Reference"
7
+ ---
8
+
9
+ # `Operation reference`
10
+
11
+ This page is the entry point for operation-level documentation.
12
+ If interaction surfaces change, update this index and linked pages.
13
+
14
+ ## Operation surfaces
15
+
16
+ - [CLI](cli/README.md) (terminal command reference for `openclaw bshield`)
17
+ - [Web](web/README.md) (web operation guidance; planned)
18
+
19
+ ## Scope
20
+
21
+ Operation docs describe:
22
+ - how users interact with Berry Shield surfaces
23
+ - how to execute common workflows safely
24
+ - where to find command-specific references
25
+
26
+ ---
27
+
28
+ ## Navigation
29
+
30
+ - [Back to Wiki Index](../README.md)
31
+ - [Back to Repository README](../../../README.md)
@@ -0,0 +1,122 @@
1
+ ---
2
+ summary: "Berry Shield CLI reference index for openclaw bshield commands"
3
+ read_when:
4
+ - Adding or changing Berry Shield CLI commands
5
+ - Documenting command usage, options, and operational flows
6
+ - Reviewing CLI docs for consistency with runtime behavior
7
+ title: "Berry Shield CLI Reference"
8
+ ---
9
+
10
+ # `Berry Shield CLI reference`
11
+
12
+ This page is the entry point for Berry Shield CLI documentation.
13
+ If command behavior changes, update this index and the command pages.
14
+
15
+ ## Command pages
16
+
17
+ - [help](help.md) (global discovery and command help)
18
+ - [init](init.md)
19
+ - [status](status.md)
20
+ - [mode](mode.md)
21
+ - [profile](profile.md)
22
+ - [policy](policy.md)
23
+ - [vine](vine.md)
24
+ - [toggle](toggle.md)
25
+ - [add](add.md)
26
+ - [rules](rules.md)
27
+ - [remove](remove.md)
28
+ - [reset](reset.md)
29
+ - [list](list.md)
30
+ - [test](test.md)
31
+ - [report](report.md)
32
+
33
+ ## Global command shape
34
+ Use this syntax as the baseline for all Berry Shield CLI operations.
35
+
36
+ ```bash
37
+ openclaw bshield <command> [options]
38
+ ```
39
+ Expected: Run one Berry Shield command with optional flags and arguments.
40
+
41
+ ## Quick start
42
+
43
+ ### 1) Inspect current state
44
+ Use this to confirm mode, policy profile, rule counts, and active layers.
45
+ ```bash
46
+ openclaw bshield status
47
+ ```
48
+ Expected: Status output includes `Mode`, `Rules`, `Policy`, and `Security Layers`.
49
+
50
+ ### 2) Set enforce mode
51
+ Use this for active protection behavior.
52
+ ```bash
53
+ openclaw bshield mode enforce
54
+ ```
55
+ Expected: CLI confirms ENFORCE mode is active.
56
+
57
+ ### 3) Set balanced profile
58
+ Use this as the recommended default profile for general operation.
59
+ ```bash
60
+ openclaw bshield profile balanced
61
+ ```
62
+ Expected: CLI confirms profile changed to `balanced`.
63
+
64
+ ### 4) Open policy wizard
65
+ Use this for interactive policy tuning.
66
+ ```bash
67
+ openclaw bshield policy
68
+ ```
69
+ Expected: Wizard prompts for profile, adaptive, and retention values.
70
+
71
+ ### 5) List rules inventory
72
+ Use this to inspect baseline and custom rules in one place.
73
+ ```bash
74
+ openclaw bshield rules list
75
+ ```
76
+ Expected: CLI shows baseline and custom IDs, including `[ENABLED]` and `[DISABLED]` status.
77
+
78
+ ### 6) Disable one baseline rule
79
+ Use this to disable one baseline rule by stable ID.
80
+ ```bash
81
+ openclaw bshield rules disable baseline secret:openai-key
82
+ ```
83
+ Expected: CLI marks the target baseline rule as disabled.
84
+
85
+ ### 7) Disable one custom rule
86
+ Use this to keep a custom rule stored but inactive.
87
+ ```bash
88
+ openclaw bshield rules disable custom secret:my-token-rule
89
+ ```
90
+ Expected: CLI marks the target custom rule as disabled.
91
+
92
+ ### 8) Tune Vine mode for smoke tests
93
+ Use this to switch Vine behavior deterministically.
94
+ ```bash
95
+ openclaw bshield vine set mode strict
96
+ ```
97
+ Expected: CLI confirms strict Vine mode for external-content guard behavior.
98
+
99
+ ## Documentation structure
100
+
101
+ Each command page follows the same structure:
102
+ - What it does
103
+ - When to use
104
+ - Syntax
105
+ - Options
106
+ - Examples (one command per `bash` block)
107
+ - Expected output
108
+ - Common errors
109
+ - Related commands
110
+
111
+ ## Notes
112
+
113
+ - Keep examples deterministic and copy/paste-safe.
114
+ - Keep one `openclaw bshield` command per `bash` block.
115
+ - Prefer explicit expected outcomes after each example.
116
+
117
+ ---
118
+
119
+ ## Navigation
120
+
121
+ - [Back to Operation Index](../README.md)
122
+ - [Back to Wiki Index](../../README.md)