sipeed/picoclaw · warning
deltachat set profile config: %w
Error message
deltachat set profile config: %w
What it means
applyProfileConfig's batch_set_config carrying displayname and/or selfavatar failed at the RPC level. This is optional cosmetic configuration: the bootstrap path already degrades it to a warning (deltachat.go:1064-1070), but the ensureAccount path (deltachat.go:1020) propagates it and stops the channel.
Source
Thrown at pkg/channels/deltachat/deltachat.go:1142
cfgMap := map[string]*string{}
if name := strings.TrimSpace(c.config.DisplayName); name != "" {
cfgMap["displayname"] = accountConfigString(name)
}
if avatar := strings.TrimSpace(c.config.AvatarImage); avatar != "" {
avatar = expandHome(avatar)
if !fileExists(avatar) {
logger.WarnCF("deltachat", "avatar_image not found; leaving current avatar unchanged", map[string]any{
"avatar_image": avatar,
})
} else {
cfgMap["selfavatar"] = accountConfigString(avatar)
}
}
if len(cfgMap) == 0 {
return nil
}
if _, err := c.rpc.call(ctx, "batch_set_config", accountID, cfgMap); err != nil {
return fmt.Errorf("deltachat set profile config: %w", err)
}
return nil
}
// configureAccount writes the managed account settings and runs the (network-bound)
// provider auto-configuration.
func (c *DeltaChatChannel) configureAccount(ctx context.Context, accountID int64) error {
if c.config.Password.String() == "" {
return c.passwordRequiredError("account is not configured")
}
cfgMap := accountConfigMap(c.config)
if _, err := c.rpc.call(ctx, "batch_set_config", accountID, cfgMap); err != nil {
return fmt.Errorf("deltachat set account config: %w", err)
}
logger.InfoCF("deltachat", "Configuring account (validating credentials)", map[string]any{
"email": c.config.Email,View on GitHub (pinned to 49183d7e8d)
Solutions
- Unset or fix display_name / avatar_image settings and retry channel start
- Ensure the avatar path is readable by the user running deltachat-rpc-server
- Check server stderr logs for the core's rejection reason
Defensive patterns
Strategy: fallback
Validate before calling
// Skip profile keys whose files are not readable by the server user
if cfg.AvatarImage != "" && !fileReadableByServiceUser(cfg.AvatarImage) {
cfg.AvatarImage = "" // leave avatar unchanged instead of failing
} Try / catch
if profileErr := c.applyProfileConfig(ctx, accountID); profileErr != nil {
// cosmetic only: log and continue, as the bootstrap path already does
logger.WarnCF("deltachat", "profile config skipped", map[string]any{"error": profileErr.Error()})
} Prevention
- Verify avatar_image paths are readable by the deltachat-rpc-server user
- Treat display name/avatar failures as non-fatal in channel start logic
When it happens
Trigger: c.rpc.call(ctx, "batch_set_config", accountID, cfgMap) errors while setting displayname or a selfavatar path that passed the fileExists check.
Common situations: Avatar file not readable by the server process (ownership/permissions), server mid-shutdown, avatar rejected by core (oversized/unsupported format).
Related errors
- get config %s: %w
- deltachat set account config: %w
- deltachat: email is required. Next step: choose one of the c
- deltachat: email %q is missing a chatmail server. Use %q or
- deltachat: invalid chatmail server marker %q; use settings.e
AI-assisted analysis of sipeed/picoclaw@49183d7e8d (2026-08-15).
Data as JSON: /api/errors/d10a066031168626.
Report an issue: GitHub.