{"record":{"id":"afdae6fa2a22b67c","repo":"Radarr/Radarr","slug":"your-radarr-configuration-0-is-being-stored-in","errorCode":null,"errorMessage":"Your Radarr configuration '{0}' is being stored in application folder '{1}' which will cause data lost during the upgrade. Please remove any symlinks or redirects before trying again.","messagePattern":"Your Radarr configuration '(.+?)' is being stored in application folder '(.+?)' which will cause data lost during the upgrade\\. Please remove any symlinks or redirects before trying again\\.","errorType":"exception","errorClass":"UpdateFailedException","httpStatus":null,"severity":"error","filePath":"src/NzbDrone.Core/Update/InstallUpdateService.cs","lineNumber":230,"sourceCode":"\n            _logger.ProgressInfo(\"Starting update script: {0}\", _configFileProvider.UpdateScriptPath);\n            _processProvider.Start(scriptPath, GetUpdaterArgs(updateSandboxFolder));\n        }\n\n        private string GetUpdaterArgs(string updateSandboxFolder)\n        {\n            var processId = _processProvider.GetCurrentProcess().Id.ToString();\n            var executingApplication = _runtimeInfo.ExecutingApplication;\n\n            return string.Join(\" \", processId, updateSandboxFolder.TrimEnd(Path.DirectorySeparatorChar).WrapInQuotes(), executingApplication.WrapInQuotes(), _startupContext.PreservedArguments);\n        }\n\n        private void EnsureAppDataSafety()\n        {\n            if (_appFolderInfo.StartUpFolder.IsParentPath(_appFolderInfo.AppDataFolder) ||\n                _appFolderInfo.StartUpFolder.PathEquals(_appFolderInfo.AppDataFolder))\n            {\n                throw new UpdateFailedException(\"Your Radarr configuration '{0}' is being stored in application folder '{1}' which will cause data lost during the upgrade. Please remove any symlinks or redirects before trying again.\", _appFolderInfo.AppDataFolder, _appFolderInfo.StartUpFolder);\n            }\n        }\n\n        private UpdatePackage GetUpdatePackage(CommandTrigger updateTrigger, bool installMajorUpdate)\n        {\n            _logger.ProgressDebug(\"Checking for updates\");\n\n            var latestAvailable = _checkUpdateService.AvailableUpdate();\n\n            if (latestAvailable == null)\n            {\n                _logger.ProgressDebug(\"No update available\");\n                return null;\n            }\n\n            if (latestAvailable.Version.Major > BuildInfo.Version.Major && !installMajorUpdate)\n            {\n                _logger.ProgressInfo(\"Unable to install major update, please update update manually from System: Updates\");","sourceCodeStart":212,"sourceCodeEnd":248,"githubUrl":"https://github.com/Radarr/Radarr/blob/ca451608dc60c6cec754aba8d96bfa30e9468ed5/src/NzbDrone.Core/Update/InstallUpdateService.cs#L212-L248","documentation":"UpdateFailedException thrown by EnsureAppDataSafety() when the AppDataFolder (config) is either the same as or a child of the StartUpFolder. Because updates overwrite the install directory, storing config there would destroy it during upgrade. Radarr aborts to prevent data loss. Both the AppData and StartUp paths are reported.","triggerScenarios":"EnsureAppDataSafety() runs at the start of InstallUpdate; StartUpFolder.IsParentPath(AppDataFolder) or they are PathEquals -> exception.","commonSituations":"Default install where config lives inside the app folder; a symlink/redirect that resolves AppData back under the install dir; extracting Radarr into its own config directory; user set APPDATA/DataFolder to a subfolder of the install path.","solutions":["Move AppData outside the install directory (e.g. /var/lib/radarr/.config/Radarr) and set the APPDATA env var / -data flag accordingly.","Remove any symlink that chains AppData back under StartUpFolder.","Reinstall so binary and config directories are siblings, not nested."],"exampleFix":"# move config out of install dir\nsudo mkdir -p /var/lib/radarr/.config\nsudo mv /opt/Radarr/AppData /var/lib/radarr/.config/Radarr\n# launch with -data /var/lib/radarr/.config/Radarr","handlingStrategy":"validation","validationCode":"if (_appFolderInfo.StartUpFolder.IsParentPath(_appFolderInfo.AppDataFolder) ||\n    _appFolderInfo.StartUpFolder.PathEquals(_appFolderInfo.AppDataFolder))\n{\n    _logger.Error(\"AppData lives inside the startup folder; refusing to auto-update to avoid data loss\");\n    _configFileProvider.UpdateAutomatically = false;\n}","typeGuard":null,"tryCatchPattern":"try { EnsureAppDataSafety(); InstallUpdate(package); }\ncatch (UpdateFailedException ex) when (ex.Message.Contains(\"data lost\"))\n{\n    _logger.Error(ex, \"Move AppData out of the install folder before updating\");\n}","preventionTips":["Always install config (AppData) outside the binary directory.","Avoid symlinks that resolve AppData back under the install path.","Add a startup health warning when AppData is nested inside StartUpFolder."],"tags":["update","config","data-safety","symlink"],"backgroundTag":null,"analyzedSha":"ca451608dc60c6cec754aba8d96bfa30e9468ed5","analyzedAt":"2026-08-13T17:21:54.115Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}