plandex-ai/plandex · error

panic in AddPlanConvoMessage: %v %s

Error message

panic in AddPlanConvoMessage: %v
%s

What it means

Recovery guard inside AddPlanConvoMessage's goroutine: a panic occurred while persisting the convo message; the panic value and stack are logged and converted into this returned error instead of crashing the server.

Source

Thrown at app/server/db/plan_helpers.go:149

	return namesMap, nil
}

func AddPlanContextTokens(planId, branch string, addTokens int) error {
	_, err := Conn.Exec("UPDATE branches SET context_tokens = context_tokens + $1 WHERE plan_id = $2 AND name = $3", addTokens, planId, branch)
	if err != nil {
		return fmt.Errorf("error updating plan tokens: %v", err)
	}
	return nil
}

func AddPlanConvoMessage(msg *ConvoMessage, branch string) error {
	errCh := make(chan error, 2)

	go func() {
		defer func() {
			if r := recover(); r != nil {
				log.Printf("panic in AddPlanConvoMessage: %v\n%s", r, debug.Stack())
				errCh <- fmt.Errorf("panic in AddPlanConvoMessage: %v\n%s", r, debug.Stack())
				runtime.Goexit() // don't allow outer function to continue and double-send to channel
			}
		}()

		_, err := Conn.Exec("UPDATE branches SET convo_tokens = convo_tokens + $1 WHERE plan_id = $2 AND name = $3", msg.Tokens, msg.PlanId, branch)

		if err != nil {
			errCh <- fmt.Errorf("error updating plan tokens: %v", err)
			return
		}

		errCh <- nil
	}()

	go func() {
		defer func() {
			if r := recover(); r != nil {
				log.Printf("panic in AddPlanConvoMessage: %v\n%s", r, debug.Stack())

View on GitHub (pinned to e2d772072e)

Solutions

  1. Read the logged stack trace to find the panicking code path
  2. Check for nil fields on the ConvoMessage being inserted
  3. Fix the underlying nil-deref/bug; the recover is only a safety net
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at app/server/db/plan_helpers.go:149 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of plandex-ai/plandex@e2d772072e (2026-09-05). Data as JSON: /api/errors/3c7518332a6e94b7. Report an issue: GitHub.