openclaw - 💡(How to fix) Fix [Bug]: 4.23 silently breaks agent_end hooks for non-bundled plugins (openclaw-mem0 auto-capture) [1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#71794Fetched 2026-04-26 05:08:15
View on GitHub
Comments
0
Participants
1
Timeline
0
Reactions
0
Participants

Error Message

$ openclaw config set plugins.entries.openclaw-mem0.hooks.allowConversationAccess true Error: Config validation failed: plugins.entries.openclaw-mem0.hooks: Unrecognized key: "allowConversationAccess"

Root Cause

4.23 introduced a security gate requiring plugins.entries.<id>.hooks.allowConversationAccess=true for non-bundled plugins to use typed hooks (agent_end, llm_input, llm_output). The default is false (deny).

This is a reasonable security feature, but it's a silent breaking change for existing installations.

Fix Action

Workaround

Patch the loader to change the default from deny to allow:

In dist/loader-*.js, find the allowConversationAccess check and change:

// Before (deny by default):
if (explicitConversationAccess !== true) {
// After (allow by default, respect explicit false):
if (explicitConversationAccess === false) {

Code Example

[gateway] typed hook "agent_end" blocked because non-bundled plugins must set plugins.entries.openclaw-mem0.hooks.allowConversationAccess=true

---

$ openclaw config set plugins.entries.openclaw-mem0.hooks.allowConversationAccess true
Error: Config validation failed: plugins.entries.openclaw-mem0.hooks: Unrecognized key: "allowConversationAccess"

---

// Before (deny by default):
if (explicitConversationAccess !== true) {
// After (allow by default, respect explicit false):
if (explicitConversationAccess === false) {
RAW_BUFFERClick to expand / collapse

Bug Description

After upgrading to OpenClaw 2026.4.23, the openclaw-mem0 plugin's agent_end hook is silently blocked with:

[gateway] typed hook "agent_end" blocked because non-bundled plugins must set plugins.entries.openclaw-mem0.hooks.allowConversationAccess=true

This means auto-capture stops working entirely after upgrading to 4.23. Auto-recall still works (via before_prompt_build, which isn't gated), so the system appears healthy — memories are injected into context, but no new memories are ever saved.

Impact

  • Every openclaw-mem0 user who upgrades to 4.23 has broken auto-capture
  • The failure is completely silent — no error in openclaw status, no user-visible warning
  • Recall working normally masks the issue — users won't notice until they realize no new memories have been captured
  • The only evidence is a single INFO-level log line in gateway logs

Root Cause

4.23 introduced a security gate requiring plugins.entries.<id>.hooks.allowConversationAccess=true for non-bundled plugins to use typed hooks (agent_end, llm_input, llm_output). The default is false (deny).

This is a reasonable security feature, but it's a silent breaking change for existing installations.

Additional Problem: Config Schema Rejects the Fix

Attempting to set the required config via CLI fails:

$ openclaw config set plugins.entries.openclaw-mem0.hooks.allowConversationAccess true
Error: Config validation failed: plugins.entries.openclaw-mem0.hooks: Unrecognized key: "allowConversationAccess"

The gateway code reads hooks.allowConversationAccess, but the config validation schema doesn't include it. So the documented fix cannot be applied through normal config tooling.

Workaround

Patch the loader to change the default from deny to allow:

In dist/loader-*.js, find the allowConversationAccess check and change:

// Before (deny by default):
if (explicitConversationAccess !== true) {
// After (allow by default, respect explicit false):
if (explicitConversationAccess === false) {

Suggested Fixes

  1. Config schema: Add hooks.allowConversationAccess to the plugin entries schema so openclaw config set works
  2. Default behavior: Plugins listed in plugins.allow are explicitly trusted — consider defaulting allowConversationAccess=true for allowed plugins
  3. Migration warning: openclaw doctor or openclaw status should warn when non-bundled plugins have registered agent_end hooks but allowConversationAccess is not set
  4. Changelog: Document this as a breaking change in 4.23 release notes

Environment

  • OpenClaw: 2026.4.23
  • openclaw-mem0: 1.0.4 (open-source mode)
  • OS: macOS (arm64)
  • Previous version: 2026.4.12 (working)

extent analysis

TL;DR

To fix the silent blocking of the openclaw-mem0 plugin's agent_end hook after upgrading to OpenClaw 2026.4.23, set plugins.entries.openclaw-mem0.hooks.allowConversationAccess=true in the configuration, although this currently requires a workaround due to a config schema issue.

Guidance

  • The issue is caused by a new security feature in OpenClaw 2026.4.23 that requires non-bundled plugins to have allowConversationAccess=true to use typed hooks.
  • To verify if the issue is resolved, check the gateway logs for the INFO-level log line indicating the hook is no longer blocked, and ensure new memories are being captured.
  • As a temporary workaround, patch the dist/loader-*.js file to change the default behavior for allowConversationAccess.
  • Consider setting allowConversationAccess=true for all plugins listed in plugins.allow to default to a more permissive behavior.

Example

// Patched loader-*.js
if (explicitConversationAccess === false) {
  // ...
}

Notes

  • The current config schema does not support setting allowConversationAccess through the openclaw config set command, making a direct fix impossible without modifying the schema or using the workaround.
  • The suggested fixes include updating the config schema, changing the default behavior for allowed plugins, adding a migration warning, and documenting this as a breaking change.

Recommendation

Apply the workaround by patching the dist/loader-*.js file until a fixed version of OpenClaw is released that addresses the config schema issue and allows for a proper configuration setting.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

openclaw - 💡(How to fix) Fix [Bug]: 4.23 silently breaks agent_end hooks for non-bundled plugins (openclaw-mem0 auto-capture) [1 participants]