diff --git a/src/Client/ZB.MOM.WW.OtOpcUa.Client.UI/Services/UserSettings.cs b/src/Client/ZB.MOM.WW.OtOpcUa.Client.UI/Services/UserSettings.cs
index 8462f43..bde8224 100644
--- a/src/Client/ZB.MOM.WW.OtOpcUa.Client.UI/Services/UserSettings.cs
+++ b/src/Client/ZB.MOM.WW.OtOpcUa.Client.UI/Services/UserSettings.cs
@@ -17,11 +17,6 @@ public sealed class UserSettings
///
public string? Username { get; set; }
- ///
- /// Gets or sets the persisted password for authenticated sessions.
- ///
- public string? Password { get; set; }
-
///
/// Gets or sets the transport security mode selected by the user.
///
diff --git a/src/Client/ZB.MOM.WW.OtOpcUa.Client.UI/ViewModels/MainWindowViewModel.cs b/src/Client/ZB.MOM.WW.OtOpcUa.Client.UI/ViewModels/MainWindowViewModel.cs
index a3beb9f..f73b39c 100644
--- a/src/Client/ZB.MOM.WW.OtOpcUa.Client.UI/ViewModels/MainWindowViewModel.cs
+++ b/src/Client/ZB.MOM.WW.OtOpcUa.Client.UI/ViewModels/MainWindowViewModel.cs
@@ -380,7 +380,7 @@ public partial class MainWindowViewModel : ObservableObject
var s = _settingsService.Load();
EndpointUrl = s.EndpointUrl;
Username = s.Username;
- Password = s.Password;
+ // Password is intentionally not persisted (security: re-prompt each launch)
SelectedSecurityMode = s.SecurityMode;
FailoverUrls = s.FailoverUrls;
SessionTimeoutSeconds = s.SessionTimeoutSeconds;
@@ -400,7 +400,7 @@ public partial class MainWindowViewModel : ObservableObject
{
EndpointUrl = EndpointUrl,
Username = Username,
- Password = Password,
+ // Password is intentionally not persisted (security: re-prompt each launch)
SecurityMode = SelectedSecurityMode,
FailoverUrls = FailoverUrls,
SessionTimeoutSeconds = SessionTimeoutSeconds,
diff --git a/tests/Client/ZB.MOM.WW.OtOpcUa.Client.UI.Tests/MainWindowViewModelTests.cs b/tests/Client/ZB.MOM.WW.OtOpcUa.Client.UI.Tests/MainWindowViewModelTests.cs
index deeb8ad..23c6352 100644
--- a/tests/Client/ZB.MOM.WW.OtOpcUa.Client.UI.Tests/MainWindowViewModelTests.cs
+++ b/tests/Client/ZB.MOM.WW.OtOpcUa.Client.UI.Tests/MainWindowViewModelTests.cs
@@ -438,7 +438,6 @@ public class MainWindowViewModelTests
{
EndpointUrl = "opc.tcp://saved:5555",
Username = "savedUser",
- Password = "savedPass",
SecurityMode = SecurityMode.Sign,
FailoverUrls = "opc.tcp://backup:5555",
SessionTimeoutSeconds = 120,
@@ -458,7 +457,8 @@ public class MainWindowViewModelTests
vm.EndpointUrl.ShouldBe("opc.tcp://saved:5555");
vm.Username.ShouldBe("savedUser");
- vm.Password.ShouldBe("savedPass");
+ // Password is intentionally not persisted: re-prompt each launch
+ vm.Password.ShouldBeNull();
vm.SelectedSecurityMode.ShouldBe(SecurityMode.Sign);
vm.FailoverUrls.ShouldBe("opc.tcp://backup:5555");
vm.SessionTimeoutSeconds.ShouldBe(120);