chenhg5/cc-connect · error

slack: bot_token and app_token are required

Error message

slack: bot_token and app_token are required

What it means

slack.New required-option guard: bot_token or app_token was not provided (or is empty). Socket Mode needs both (xoxb- bot token and xapp- app token), so construction fails before any connection attempt.

Source

Thrown at platform/slack/slack.go:53

	allowFrom        string
	sessionScope     string // "user" (default) | "channel" | "thread"
	client           *slack.Client
	socket           *socketmode.Client
	handler          core.MessageHandler
	cancel           context.CancelFunc
	channelNameCache map[string]string
	channelCacheMu   sync.RWMutex
	userNameCache    sync.Map // userID -> display name
}

func New(opts map[string]any) (core.Platform, error) {
	botToken, _ := opts["bot_token"].(string)
	appToken, _ := opts["app_token"].(string)
	allowFrom, _ := opts["allow_from"].(string)
	core.CheckAllowFrom("slack", allowFrom)
	shareSessionInChannel, _ := opts["share_session_in_channel"].(bool)
	if botToken == "" || appToken == "" {
		return nil, fmt.Errorf("slack: bot_token and app_token are required")
	}
	scope := normalizeSessionScope(opts["session_scope"], shareSessionInChannel)
	if scope == "thread" {
		slog.Warn("slack: session_scope=thread gives each Slack thread its own session; " +
			"if your agent runtime is tmux, also set window_per_session=true — " +
			"without it, concurrent threads share a single pane and their output will interleave")
	}
	return &Platform{
		botToken:         botToken,
		appToken:         appToken,
		allowFrom:        allowFrom,
		sessionScope:     scope,
		channelNameCache: make(map[string]string),
	}, nil
}

// normalizeSessionScope resolves the configured session_scope option to one of
// "user" | "channel" | "thread". For backward compatibility, when session_scope

View on GitHub (pinned to 4000b2338a)

Solutions

  1. Set bot_token and app_token in [platforms.slack]
  2. Create a Slack app with Socket Mode enabled to obtain both tokens
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at platform/slack/slack.go:53 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of chenhg5/cc-connect@4000b2338a (2026-09-06). Data as JSON: /api/errors/d2d1f1209ff5b5cf. Report an issue: GitHub.