chenhg5/cc-connect · error
platform %q does not support proactive messaging (timer)
Error message
platform %q does not support proactive messaging (timer)
What it means
Thrown when the resolved platform does not implement the optional ReplyContextReconstructor interface, which is required to rebuild a reply context for proactive (timer) messages. Normal reply flows work, but the engine cannot originate a new message without that capability.
Source
Thrown at core/engine.go:1709
// Multi-workspace fallback: strip workspace prefix from session key.
if targetPlatform == nil {
for _, p := range e.platforms {
needle := ":" + p.Name() + ":"
if idx := strings.Index(sessionKey, needle); idx >= 0 {
targetPlatform = p
platformName = p.Name()
sessionKey = sessionKey[idx+1:]
break
}
}
}
if targetPlatform == nil {
return fmt.Errorf("platform %q not found for session %q", platformName, sessionKey)
}
rc, ok := targetPlatform.(ReplyContextReconstructor)
if !ok {
return fmt.Errorf("platform %q does not support proactive messaging (timer)", platformName)
}
runSessionKey := sessionKey
var replyCtx any
var err error
if !job.Mute {
if resolver, ok := targetPlatform.(CronReplyTargetResolver); ok {
resolvedSessionKey, resolvedReplyCtx, err := resolver.ResolveCronReplyTarget(sessionKey, timerRunTitle(job))
if err != nil {
if !errors.Is(err, ErrNotSupported) {
return fmt.Errorf("resolve timer reply target: %w", err)
}
} else {
if resolvedSessionKey != "" {
runSessionKey = resolvedSessionKey
}
if resolvedReplyCtx != nil {
replyCtx = resolvedReplyCtxView on GitHub (pinned to 4000b2338a)
Solutions
- Implement ReplyContextReconstructor on the platform adapter
- Switch the timer job to a platform that supports proactive messaging
- Check the platform adapter version and upgrade to one with proactive support
Example fix
// before
func (p *Platform) Stop() {}
// after
func (p *Platform) ReconstructReplyContext(sessionKey string) (any, error) { return p.rebuildCtx(sessionKey) } Defensive patterns
Strategy: type-guard
Validate before calling
if _, ok := platform.(core.ReplyContextReconstructor); !ok { /* choose another platform for timers */ } Type guard
rc, ok := targetPlatform.(core.ReplyContextReconstructor); if !ok { return fmt.Errorf("platform %q lacks proactive support", name) } Try / catch
if err := engine.ScheduleTimer(job); err != nil && strings.Contains(err.Error(), "proactive messaging") { fallbackToManualReminder() } Prevention
- Implement ReplyContextReconstructor in all custom platform adapters
- Document which platforms support proactive messaging
- Test timer jobs against each platform during integration
When it happens
Trigger: A cron/timer job targets a platform adapter that lacks ReplyContextReconstructor implementation.
Common situations: Using a minimal/custom platform adapter for scheduled messages; older platform plugin versions predating the ReplyContextReconstructor capability.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
- bridge: adapter %q does not support reconstruct_reply
- platform %q does not support ReconstructReplyCtx
- resolve timer reply target: %w
- platform %s: %w
- platform %q does not support proactive messaging
AI-assisted analysis of chenhg5/cc-connect@4000b2338a (2026-09-06).
Data as JSON: /api/errors/4c05aef3d70ff3dd.
Report an issue: GitHub.