#when chatting via telegram dm, the agent isn't able to write to memory files anymore (2026.3.13)

1 messages ยท Page 1 of 1 (latest)

dense quartz
#

I upgraded from 2026.3.8 and since then my telegram dm agent can no longer write to memory files. it says it doesn't have nodes in its tools policy. how do i fix this?

signal flareBOT
#

To help others find answers, you can mark your question as solved via Right click solution message -> Apps -> โœ… Mark Solution

dense quartz
#

help me @novel harbor , you're my only hope โค๏ธ

nova rampart
#

Go to ur openclaw ui

#

go to the agents section

#

click on the agent u use for telegram

#

and click on tools

#

and give it access to all the options in the file section

dense quartz
#

thank you for responding @nova rampart . โค๏ธ so the config has all tools enabled. i restarted openclaw. this is the message i got back from my agent when i told it to retry:

#

canvas.eval is still blocked on darwin. The tools list in my session prompt only shows these tools available to me: web_search, web_fetch, browser, canvas, message, agents_list, sessions_list, sessions_history, sessions_send, subagents, session_status, image, memory_get, memory_search, sessions_spawn, sessions_yield, tts.

No nodes tool. It's filtered by the system prompt tool policy, not openclaw.json โ€” the runtime controls what I can actually call. A gateway restart might pick up config changes if you added nodes recently. Did you restart after editing the config?

nova rampart
#

can u show me ur openclaw.json the tools part

dense quartz
#
  "tools": {
    "allow": [
      "group:openclaw",
      "tts",
      "group:automation"
    ],
nova rampart
#

could u show me ur full openclaw.json just remove any private stuff u have there

dense quartz
#
{
  "meta": {
    "lastTouchedVersion": "2026.3.13",
    "lastTouchedAt": "2026-03-21T15:00:53.554Z"
  },
  "wizard": {
    "lastRunAt": "2026-02-17T20:18:52.963Z",
    "lastRunVersion": "2026.2.15",
    "lastRunCommand": "doctor",
    "lastRunMode": "local"
  },
  "logging": {
    "level": "info",
    "redactSensitive": "tools"
  },
  "update": {
    "channel": "stable"
  },
  "browser": {
    "enabled": false
  },
  "auth": {
    "profiles": {
      "anthropic:default": {
        "provider": "anthropic",
        "mode": "api_key"
      }
    }
  },
  "agents": {
    "defaults": {
      "model": {
        "primary": "anthropic/claude-sonnet-4-6"
      },
      "models": {
        "anthropic/anthropic:default": {
          "params": {
            "cacheRetention": "short"
          }
        },
        "anthropic/claude-haiku-4-5": {
          "params": {
            "cacheRetention": "short"
          }
        },
        "anthropic/claude-opus-4-6": {
          "params": {
            "cacheRetention": "short"
          }
        },
        "anthropic/claude-sonnet-4-6": {
          "params": {
            "cacheRetention": "short"
          }
        }
      },
      "workspace": "/Users/user/.openclaw/workspace",
      "memorySearch": {
        "enabled": true,
        "extraPaths": [
          "memory-imports"
        ],
        "provider": "local"
      },
      "contextPruning": {
        "mode": "cache-ttl",
        "ttl": "1h"
      },
      "compaction": {
        "mode": "safeguard"
      },
      "heartbeat": {
        "every": "30m"
      },
      "maxConcurrent": 4,
#
      "subagents": {
        "maxConcurrent": 8
      }
    },
    "list": [
      {
        "id": "main",
        "heartbeat": {
          "every": "0m"
        },
        "tools": {
          "profile": "full"
        }
      },
      {
        "id": "study",
        "name": "study",
        "workspace": "/Users/user/.openclaw/workspace-study",
        "agentDir": "/Users/user/.openclaw/agents/study/agent",
        "model": "anthropic/claude-sonnet-4-6",
        "identity": {
          "name": "Hex",
          "emoji": "๐Ÿ”ฎ"
        }
      },
      {
        "id": "vox",
        "name": "vox",
        "workspace": "/Users/user/.openclaw/workspace-vox",
        "model": "anthropic/claude-sonnet-4-6",
        "identity": {
          "name": "Vox",
          "emoji": "๐Ÿ“ก"
        }
      }
    ]
  },
  "tools": {
    "allow": [
      "group:openclaw",
      "tts",
      "group:automation"
    ],
    "web": {
      "search": {
        "enabled": true,
        "apiKey": ""
      },
      "fetch": {
        "enabled": true
      }
    }
  },
  "bindings": [
    {
      "agentId": "study",
      "match": {
        "channel": "discord",
        "peer": {
          "kind": "channel",
          "id": ""
        }
      }
    },
    {
      "agentId": "vox",
      "match": {
        "channel": "discord",
        "peer": {
          "kind": "channel",
          "id": ""
        }
      }
    }
  ],
#
  "messages": {
    "ackReactionScope": "group-mentions",
    "tts": {
      "auto": "tagged",
      "provider": "elevenlabs",
      "elevenlabs": {
        "apiKey": "",
        "voiceId": "",
        "modelId": "eleven_multilingual_v2",
        "languageCode": "en",
        "voiceSettings": {
          "stability": 0.5,
          "similarityBoost": 0.75,
          "style": 0,
          "useSpeakerBoost": true,
          "speed": 0.8
        }
      }
    }
  },
  "commands": {
    "native": "auto",
    "nativeSkills": "auto",
    "restart": true,
    "ownerDisplay": "raw"
  },
  "cron": {
    "maxConcurrentRuns": 2
  },
  "hooks": {
    "internal": {
      "enabled": true,
      "entries": {
        "boot-md": {
          "enabled": true
        },
        "command-logger": {
          "enabled": true
        },
        "session-memory": {
          "enabled": true
        }
      }
    }
  },
  "channels": {
    "telegram": {
      "enabled": true,
      "dmPolicy": "pairing",
      "botToken": "",
      "groupPolicy": "open",
      "streaming": "partial"
    },
    "discord": {
      "enabled": true,
      "commands": {
        "native": "auto"
      },
      "token": "",
      "groupPolicy": "allowlist",
      "streaming": "off",
      "dmPolicy": "pairing",
      "guilds": {
        "1471760566426013853": {
          "requireMention": false,
          "users": [
            ""
          ],
          "channels": {
            "*": {
              "allow": true,
              "requireMention": false
            }
          }
        }
      }
    }
  },
#
  "gateway": {
    "port": 18789,
    "mode": "local",
    "bind": "loopback",
    "auth": {
      "mode": "token",
      "token": ""
    },
    "tailscale": {
      "mode": "off",
      "resetOnExit": false
    },
    "remote": {
      "url": "ws://openclaw.local:18789",
      "sshTarget": "user@openclaw.local"
    },
    "nodes": {
      "denyCommands": [
        "camera.snap",
        "camera.clip",
        "screen.record",
        "calendar.add",
        "contacts.add",
        "reminders.add"
      ]
    }
  },
  "plugins": {
    "allow": [
      "lossless-claw",
      "telegram",
      "discord"
    ],
    "entries": {
      "discord": {
        "enabled": true
      },
      "lossless-claw": {
        "enabled": true,
        "config": {
          "contextThreshold": 0.75,
          "freshTailCount": 32,
          "incrementalMaxDepth": -1
        }
      },
      "telegram": {
        "enabled": true
      }
    },
    "installs": {
      "lossless-claw": {
        "source": "npm",
        "spec": "@martian-engineering/lossless-claw",
        "installPath": "/Users/user/.openclaw/extensions/lossless-claw",
        "version": "0.3.0",
        "resolvedName": "@martian-engineering/lossless-claw",
        "resolvedVersion": "0.3.0",
        "resolvedSpec": "@martian-engineering/lossless-claw@0.3.0",
        "integrity": "sha512-SsY0bp3SoSzEu+KB8fOBke46MFhTmslfWg6OvC4pShq34ig2+V+jkTFAHib8PTZ0MoethAddR+ZmRN9OASorAA==",
        "shasum": "bc9725d6d59d9b1523128ab528f1258c4258fa3f",
        "resolvedAt": "2026-03-17T19:34:11.152Z",
        "installedAt": "2026-03-17T19:34:32.078Z"
      }
    }
  }
}
nova rampart
#
  "allow": [
    "group:openclaw",
    "group:nodes",          // โ† add this line
    "tts",
    "group:automation"
  ],
  "web": { ... }
}
#

After that do: ```openclaw restart

or

openclaw gateway restart

if systemd:

systemctl --user restart openclaw-gateway

or if pnpm/dev:

pnpm restart # or docker compose restart ```

potent escarp
#

*Not krill, but subbing in to help ๐Ÿซก *
I have similar issues, fails anytime it tries to interact with node / canvas. But the writing to file issue seems separate. Is it able to write normal files? Does it have permissions?

#

Well, Neil knows it better than me

dense quartz
#

i did openclaw gateway restart, started a /new session with my telegram dm, told it to retry and it said it cannot find the nodes tool in the available toolkit for this session (i asked it what session and it said main). i even tried restarting gateway and /new again, same result

  "tools": {
    "allow": [
      "group:openclaw",
      "group:nodes",
      "tts",
      "group:automation"
    ],
dense quartz
potent escarp
#

*Not krill, but subbing in to help ๐Ÿซก *
If you're comfortable with it, try giving it /elevated full access? And see if that allows for it to do everything.

dense quartz
#

it failed to elevate and redirected me to here. can you help me understand what to do next? and what does this do?

openclaw sandbox explain --session agent:main:telegram:slash:number

๐Ÿฆž OpenClaw 2026.3.13 (61d171a) โ€” I run on caffeine, JSON5, and the audacity of "it worked on my machine."

11:37:27 [plugins] [lcm] Plugin loaded (enabled=true, db=/Users/user/.openclaw/lcm.db, threshold=0.75)
Effective sandbox:
  agentId: main
  sessionKey: agent:main:telegram:slash:number
  mainSessionKey: agent:main:main
  runtime: direct
  mode: off scope: agent perSession: false
  workspaceAccess: none workspaceRoot: /Users/user/.openclaw/sandboxes

Sandbox tool policy:
  allow (default): exec, process, read, write, edit, apply_patch, image, sessions_list, sessions_history, sessions_send, sessions_spawn, sessions_yield, subagents, session_status
  deny  (default): browser, canvas, nodes, cron, gateway, telegram, whatsapp, discord, irc, googlechat, slack, signal, imessage, line

Elevated:
  enabled: true
  channel: telegram
  allowedByConfig: false
  failing gates: allowFrom (tools.elevated.allowFrom.telegram)

Fix-it:
  - tools.sandbox.tools.allow
  - tools.sandbox.tools.deny
  - agents.list[].tools.sandbox.tools.allow
  - agents.list[].tools.sandbox.tools.deny
  - tools.elevated.enabled
  - tools.elevated.allowFrom.telegram
nova rampart
#

@novel harbor help us

#

we are confused

dense quartz
#

y'all are real G's tho ty

nova rampart
#

๐Ÿ˜ญ yw

#

@novel harbor IK U JUST CAME ONLINE DONT IGNORE

dense quartz
#

if anything though, i know the last good version was 3.8.... it's just a bummer that there seems to be a breaking change in 3.11+ for me. i don't know what else to do except to downgrade

#

and it would be a super bummer if i can't upgrade anymore past 3.8

nova rampart
#

lol

dense quartz
#

help me obi @novel harbor kenobi, you're my only hope

modern magnet
#

My tools section looks like this:

"tools": {
    "profile": "full",
    "elevated": {
      "enabled": true,
      "allowFrom": {
        "telegram": [
          123456789
        ]
      }
    }
  },

In my case telegram.

dense quartz
#

i ended up downgrading back to 3.8 ๐Ÿ™ i would rather have a working openclaw than a shiny new openclaw

nova rampart
dense quartz
#

I don't know how to do that without losing all of my context (since mid February, 3 agents, multiple discord channels, lots of workflows)

nova rampart
#

I mean like reinstall instead using npm not ur .openclaw folder

#

Just back up incase

dense quartz
#

i backed up and reinstalled and i have the same problem still ๐Ÿ™

#

just going to stay downgraded for now :<

modern magnet
#

Based on the docs, the issue is that your Telegram DM agent is running in a sandboxed context (default for non-main sessions) and something in the memory file writing flow requires the nodes tool, which isn't in the agent's allowed tools list.

Fix:

Add group:nodes (or just nodes) to your agent's tool allow policy. If you have a per-agent config for your Telegram DM agent, or you can set it globally:

{
  tools: {
    allow: ["group:nodes", "group:fs", "group:memory"]
  }
}

Or for a specific agent (if you have multi-agent routing):

#
{
  agents: {
    list: [
      {
        id: "your-telegram-agent",
        tools: {
          allow: ["group:nodes", "group:fs", "group:memory"]
        }
      }
    ]
  }
}

Alternative if you don't need node features: If your Telegram agent shouldn't be using node features at all, check your agents.defaults.sandbox config. The error also commonly occurs when the sandbox workspace access is too restrictive. Try:

#
{
  agents: {
    defaults: {
      sandbox: {
        mode: "off"  // or ensure workspaceAccess: "rw" if sandboxed
      }
    }
  }
}

Run openclaw sandbox explain --session <session-key> to see the effective sandbox and tool policy for your Telegram session.