Summary
The boot-md hook registers for the gateway:startup event, but the hook loader completes registration after the startup event has already been emitted. The hook never fires.
Evidence from gateway logs
01:05:02.501Z [gateway] listening on ws://0.0.0.0:18789 (PID 454677) ← startup complete
01:05:02.987Z [hooks:loader] Registered hook: boot-md -> gateway:startup ← hook registers ~500ms later
The gateway:startup event fires at 01:05:02.5. The boot-md hook doesn't register until 01:05:03.0. By the time it's listening, the event has already been emitted and missed.
Expected behavior
boot-md should fire after every gateway startup. Either:
- Defer the
gateway:startup event until all hooks are registered
- Replay the startup event to hooks that register for it after it fires
- Run boot-md handlers directly after hook registration completes
Environment
- OpenClaw version: 2026.2.26
- OS: Ubuntu Linux 6.8.0-101-generic (x64)
- Node: v25.4.0
Workaround
Using a delayed cron as a substitute for the boot-md hook until this is resolved.
Summary
The
boot-mdhook registers for thegateway:startupevent, but the hook loader completes registration after the startup event has already been emitted. The hook never fires.Evidence from gateway logs
The
gateway:startupevent fires at01:05:02.5. Theboot-mdhook doesn't register until01:05:03.0. By the time it's listening, the event has already been emitted and missed.Expected behavior
boot-mdshould fire after every gateway startup. Either:gateway:startupevent until all hooks are registeredEnvironment
Workaround
Using a delayed cron as a substitute for the boot-md hook until this is resolved.