-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Description
Problem
If the plugin is uninstalled from one path and reinstalled from another, a previously bound conversation can get into a bad split-brain state:
- the plugin's local state says the conversation is not bound
- but OpenClaw core still rejects a new bind because the conversation is already bound
The user needs an explicit overwrite-or-cancel path when this happens.
Repro
- Install the plugin from path A and bind a conversation.
- Remove it.
- Reinstall from path B.
- Run
/codex_statusin the previously bound conversation. - The plugin may report "not bound", but binding again is rejected because core still has a binding record.
Current Findings
- The plugin only hydrates approved binds from its local pending-bind path; it does not have a true overwrite/conflict flow.
- The plugin SDK surface exposed here only gives us
bind,unbind, andresolveByConversationfor runtime conversation bindings. - OpenClaw core/plugin binding tests explicitly show that persistent approvals do not carry across plugin roots even when
pluginIdstays the same. - That makes plugin-move/reinstall behavior especially likely to surface as path/root identity drift.
Proposed Scope
- Detect when a conversation already has a runtime binding that conflicts with the plugin's local state.
- Distinguish "same plugin, new path/root" from unrelated binding ownership.
- Offer an explicit overwrite/detach/cancel prompt.
- Likely requires at least some OpenClaw core/API work so the plugin can inspect and replace the existing binding safely.
Source Notes
- Plugin bind request path:
src/controller.ts:3044 - Plugin local binding storage:
src/state.ts:147 - Plugin SDK runtime binding surface:
src/openclaw-plugin-sdk.d.ts:158 - OpenClaw conversation runtime helpers:
/Users/huntharo/github/openclaw/src/plugin-sdk/conversation-runtime.ts:1 - OpenClaw binding record helpers:
/Users/huntharo/github/openclaw/src/bindings/records.ts:12 - OpenClaw test: persistent approvals do not carry across plugin roots:
/Users/huntharo/github/openclaw/src/plugins/conversation-binding.test.ts:289
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Type
Projects
Status
Inbox