{"record":{"id":"27f15169063e39c9","repo":"sipeed/picoclaw","slug":"deltachat-created-chatmail-account-q-on-s-upda","errorCode":null,"errorMessage":"deltachat: created chatmail account %q on %s. Update channel_list.deltachat.settings.email from %q to %q, remove the @server bootstrap marker, then run PicoClaw again to use the account","messagePattern":"deltachat: created chatmail account %q on (.+?)\\. Update channel_list\\.deltachat\\.settings\\.email from %q to %q, remove the @server bootstrap marker, then run PicoClaw again to use the account","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"info","filePath":"pkg/channels/deltachat/deltachat.go","lineNumber":1081,"sourceCode":"\n\tif profileErr := c.applyProfileConfig(ctx, accountID); profileErr != nil {\n\t\tlogger.WarnCF(\n\t\t\t\"deltachat\",\n\t\t\t\"Could not apply profile config to new account\",\n\t\t\tmap[string]any{\"error\": profileErr.Error()},\n\t\t)\n\t}\n\n\taddr, err := c.getAccountConfigString(ctx, accountID, \"addr\")\n\tif err != nil {\n\t\treturn fmt.Errorf(\"deltachat created account on %s, but could not read generated email: %w\", server, err)\n\t}\n\taddr = strings.TrimSpace(addr)\n\tif addr == \"\" {\n\t\treturn fmt.Errorf(\"deltachat created account on %s, but generated email is empty\", server)\n\t}\n\n\treturn fmt.Errorf(\n\t\t\"deltachat: created chatmail account %q on %s. Update channel_list.deltachat.settings.email from %q to %q, remove the @server bootstrap marker, then run PicoClaw again to use the account\",\n\t\taddr,\n\t\tserver,\n\t\tc.config.Email,\n\t\taddr,\n\t)\n}\n\nfunc (c *DeltaChatChannel) cleanupPendingAccount(ctx context.Context, accountID int64) {\n\tif accountID <= 0 || c.rpc == nil {\n\t\treturn\n\t}\n\tstopCtx, cancel := context.WithTimeout(ctx, 10*time.Second)\n\t_, _ = c.rpc.call(stopCtx, \"stop_ongoing_process\", accountID)\n\tcancel()\n\n\tremoveCtx, cancel := context.WithTimeout(ctx, 10*time.Second)\n\t_, _ = c.rpc.call(removeCtx, \"remove_account\", accountID)","sourceCodeStart":1063,"sourceCodeEnd":1099,"githubUrl":"https://github.com/sipeed/picoclaw/blob/49183d7e8daed0dba89ddbb6fcb60089401d9680/pkg/channels/deltachat/deltachat.go#L1063-L1099","documentation":"Not a failure: this is the successful terminal state of the chatmail bootstrap flow, deliberately returned as an error so the channel does not auto-use a randomly generated address. The account exists and its address is known; the operator must pin it in config and remove the '@server' marker.","triggerScenarios":"createChatmailBootstrapAccount completes: add_transport_from_qr succeeded and a non-empty addr was read, while channel_list.deltachat.settings.email still holds the '@domain' bootstrap marker.","commonSituations":"First-time chatmail setup, e.g. email: \"@nine.testrun.org\" on a fresh data_dir.","solutions":["Copy the generated address quoted in the message","Edit channel_list.deltachat.settings.email: replace the '@server' value with the generated addr","Restart PicoClaw: ensureAccount will find the already-configured account by addr and reuse it"],"exampleFix":"# before (channel_list config)\nemail: \"@nine.testrun.org\"\n\n# after\nemail: \"bot-1739abcd@nine.testrun.org\"","handlingStrategy":"try-catch","validationCode":null,"typeGuard":"var chatmailCreatedPrefix = \"deltachat: created chatmail account \"\n\nfunc isChatmailBootstrapDone(err error) bool {\n    return err != nil && strings.HasPrefix(err.Error(), chatmailCreatedPrefix)\n}","tryCatchPattern":"if err := ch.ensureAccount(ctx); err != nil {\n    if isChatmailBootstrapDone(err) {\n        // success-with-instructions: parse addr, update config, remove '@server' marker\n        log.Info(\"chatmail bootstrap complete; config update required\")\n        return nil // or surface as actionable info, not a failure\n    }\n    return err\n}","preventionTips":["Treat this message as a success sentinel in automation, not as a crash","Automate the follow-up: rewrite the email setting and drop the '@server' marker, then restart"],"tags":["deltachat","chatmail","bootstrap","config","go"],"backgroundTag":null,"analyzedSha":"49183d7e8daed0dba89ddbb6fcb60089401d9680","analyzedAt":"2026-08-15T21:55:41.315Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}