openclaw - 💡(How to fix) Fix [Bug]: plugins.entries.<id>.hooks.allowConversationAccess missing from Zod config schema [1 comments, 2 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#72107Fetched 2026-04-27 05:34:45
View on GitHub
Comments
1
Participants
2
Timeline
6
Reactions
0
Timeline (top)
labeled ×2closed ×1commented ×1mentioned ×1

Setting allowConversationAccess: true under plugins.entries.<id>.hooks is rejected at config load time. The field exists in PluginEntryConfig (types.plugins.d.ts) but is absent from the Zod config schema, which uses $strict and only includes allowPromptInjection.

Root Cause

Setting allowConversationAccess: true under plugins.entries.<id>.hooks is rejected at config load time. The field exists in PluginEntryConfig (types.plugins.d.ts) but is absent from the Zod config schema, which uses $strict and only includes allowPromptInjection.

Fix Action

Fix / Workaround

Affected: any plugin relying on agent_end or conversation-level hook access (e.g. clawd-remember) Severity: high — feature is completely blocked, no config workaround exists Frequency: always reproducible Consequence: plugins must fall back to disk-based session file capture; agent_end capture cannot be enabled regardless of plugin-side configuration

Code Example

{
  "plugins": {
    "entries": {
      "my-plugin": {
        "hooks": {
          "allowConversationAccess": true
        }
      }
    }
  }
}

---

hooks: ZodOptional<ZodObject<{
    allowPromptInjection: ZodOptional<ZodBoolean>;
}, z.core.$strict>>

---

Verified by inspecting installed SDK type definitions:

**`dist/plugin-sdk/src/config/types.plugins.d.ts`** — field present in types:


export type PluginEntryConfig = {
  hooks?: {
    allowPromptInjection?: boolean;
    allowConversationAccess?: boolean; // ← present
  };
};


**`dist/plugin-sdk/src/config/zod-schema.d.ts`** — field missing from Zod:


hooks: ZodOptional<ZodObject<{
    allowPromptInjection: ZodOptional<ZodBoolean>;
}, z.core.$strict>>   // ← allowConversationAccess not here


*Identified via AI-assisted code review (Claude via OpenClaw). File references manually verified against installed SDK.*
RAW_BUFFERClick to expand / collapse

Bug type

Behavior bug (incorrect output/state without crash)

Beta release blocker

No

Summary

Setting allowConversationAccess: true under plugins.entries.<id>.hooks is rejected at config load time. The field exists in PluginEntryConfig (types.plugins.d.ts) but is absent from the Zod config schema, which uses $strict and only includes allowPromptInjection.

Steps to reproduce

  1. Add the following to openclaw.json:
{
  "plugins": {
    "entries": {
      "my-plugin": {
        "hooks": {
          "allowConversationAccess": true
        }
      }
    }
  }
}
  1. Start or reload OpenClaw.
  2. Config validation fails — field rejected by the $strict Zod schema.

Expected behavior

Per PluginEntryConfig in types.plugins.d.ts, allowConversationAccess is a documented optional boolean under hooks. OpenClaw should accept this config and grant the plugin conversation access in agent_end / llm_output hooks.

Actual behavior

Config validation fails. The Zod schema for plugins.entries.<id>.hooks is $strict with only allowPromptInjection present:

hooks: ZodOptional<ZodObject<{
    allowPromptInjection: ZodOptional<ZodBoolean>;
}, z.core.$strict>>

allowConversationAccess is absent. The TypeScript types and Zod schema are out of sync.

OpenClaw version

2026.4.23-4eca5026e977

Operating system

Ubuntu 24.04

Install method

npm global

Model

NOT_ENOUGH_INFO

Provider / routing chain

NOT_ENOUGH_INFO

Additional provider/model setup details

No response

Logs, screenshots, and evidence

Verified by inspecting installed SDK type definitions:

**`dist/plugin-sdk/src/config/types.plugins.d.ts`** — field present in types:


export type PluginEntryConfig = {
  hooks?: {
    allowPromptInjection?: boolean;
    allowConversationAccess?: boolean; // ← present
  };
};


**`dist/plugin-sdk/src/config/zod-schema.d.ts`** — field missing from Zod:


hooks: ZodOptional<ZodObject<{
    allowPromptInjection: ZodOptional<ZodBoolean>;
}, z.core.$strict>>   // ← allowConversationAccess not here


*Identified via AI-assisted code review (Claude via OpenClaw). File references manually verified against installed SDK.*

Impact and severity

Affected: any plugin relying on agent_end or conversation-level hook access (e.g. clawd-remember) Severity: high — feature is completely blocked, no config workaround exists Frequency: always reproducible Consequence: plugins must fall back to disk-based session file capture; agent_end capture cannot be enabled regardless of plugin-side configuration

Additional information

Suggested fix: add allowConversationAccess: z.boolean().optional() to the hooks object in the plugin entries Zod schema.

cc @vincentkoc

extent analysis

TL;DR

Add allowConversationAccess: z.boolean().optional() to the hooks object in the plugin entries Zod schema to fix the config validation issue.

Guidance

  • Verify that the allowConversationAccess field is present in the PluginEntryConfig type definition (types.plugins.d.ts) but missing from the Zod schema (zod-schema.d.ts).
  • Update the Zod schema to include the allowConversationAccess field with the suggested fix: allowConversationAccess: z.boolean().optional().
  • After applying the fix, reload OpenClaw and reattempt to set allowConversationAccess: true under plugins.entries.<id>.hooks to verify that config validation no longer fails.
  • If issues persist, review the Zod schema and TypeScript types for any further discrepancies.

Example

hooks: ZodOptional<ZodObject<{
  allowPromptInjection: ZodOptional<ZodBoolean>;
  allowConversationAccess: ZodOptional<ZodBoolean>; // Add this line
}, z.core.$strict>>

Notes

The provided fix assumes that the allowConversationAccess field should be an optional boolean in the Zod schema, matching its definition in the PluginEntryConfig type.

Recommendation

Apply the suggested workaround by adding allowConversationAccess: z.boolean().optional() to the hooks object in the plugin entries Zod schema, as this directly addresses the identified discrepancy between the TypeScript types and the Zod schema.

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…

FAQ

Expected behavior

Per PluginEntryConfig in types.plugins.d.ts, allowConversationAccess is a documented optional boolean under hooks. OpenClaw should accept this config and grant the plugin conversation access in agent_end / llm_output hooks.

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]: plugins.entries.<id>.hooks.allowConversationAccess missing from Zod config schema [1 comments, 2 participants]