{"record":{"id":"eccbfbe1ec0189b4","repo":"router-for-me/CLIProxyAPI","slug":"xai-token-storage-create-token-file-w","errorCode":null,"errorMessage":"xai token storage: create token file: %w","messagePattern":"xai token storage: create token file: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/auth/xai/token.go","lineNumber":56,"sourceCode":"}\n\n// SaveTokenToFile writes xAI credentials to a JSON auth file.\nfunc (ts *TokenStorage) SaveTokenToFile(authFilePath string) error {\n\tmisc.LogSavingCredentials(authFilePath)\n\tts.Type = \"xai\"\n\tts.AuthKind = \"oauth\"\n\tif errMkdirAll := os.MkdirAll(filepath.Dir(authFilePath), 0o700); errMkdirAll != nil {\n\t\treturn fmt.Errorf(\"xai token storage: create directory: %w\", errMkdirAll)\n\t}\n\n\tdata, errMerge := misc.MergeMetadata(ts, ts.Metadata)\n\tif errMerge != nil {\n\t\treturn fmt.Errorf(\"xai token storage: merge metadata: %w\", errMerge)\n\t}\n\n\tfile, err := os.Create(authFilePath)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"xai token storage: create token file: %w\", err)\n\t}\n\tdefer func() {\n\t\tif errClose := file.Close(); errClose != nil {\n\t\t\tlog.Errorf(\"xai token storage: close token file error: %v\", errClose)\n\t\t}\n\t}()\n\n\tencoder := json.NewEncoder(file)\n\tencoder.SetIndent(\"\", \"  \")\n\tif err = encoder.Encode(data); err != nil {\n\t\treturn fmt.Errorf(\"xai token storage: write token file: %w\", err)\n\t}\n\treturn nil\n}\n\n// CredentialFileName returns the filename used for xAI credentials.\nfunc CredentialFileName(email, subject string) string {\n\temail = sanitizeFileSegment(email)","sourceCodeStart":38,"sourceCodeEnd":74,"githubUrl":"https://github.com/router-for-me/CLIProxyAPI/blob/78f0c4079e3e6273d65d03b5549cffc898703264/internal/auth/xai/token.go#L38-L74","documentation":"Error \"xai token storage: create token file: %w\" thrown in router-for-me/CLIProxyAPI.","triggerScenarios":"Thrown at internal/auth/xai/token.go:56 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Verify the token file path is writable and not locked by another process.","Check the wrapped error for permission or disk failures."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"78f0c4079e3e6273d65d03b5549cffc898703264","analyzedAt":"2026-08-15T12:26:37.444Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}