rustdesk/rustdesk · error
Changing permanent password is disabled
Error message
Changing permanent password is disabled
What it means
set_permanent_password first checks Config::is_disable_change_permanent_password(). When the deployment has disabled changing the permanent password (an admin/policy option), the call bails immediately with 'Changing permanent password is disabled' before any IPC to the daemon happens. This is a deliberate policy gate, not a transient failure.
Source
Thrown at src/ipc.rs:1700
}
pub fn is_permanent_password_preset() -> bool {
if let Ok(Some(v)) = get_config("permanent-password-is-preset") {
let v = v.trim();
return v == "Y";
}
false
}
pub fn get_fingerprint() -> String {
get_config("fingerprint")
.unwrap_or_default()
.unwrap_or_default()
}
pub fn set_permanent_password(v: String) -> ResultType<()> {
if Config::is_disable_change_permanent_password() {
bail!("Changing permanent password is disabled");
}
if set_permanent_password_with_ack(v)? {
Ok(())
} else {
bail!("Changing permanent password was rejected by daemon");
}
}
#[tokio::main(flavor = "current_thread")]
pub async fn set_permanent_password_with_ack(v: String) -> ResultType<bool> {
set_permanent_password_with_ack_async(v).await
}
async fn set_permanent_password_with_ack_async(v: String) -> ResultType<bool> {
// The daemon ACK/NACK is expected quickly since it applies the config in-process.
let ms_timeout = 1_000;
let mut c = connect(ms_timeout, "").await?;
c.send_config("permanent-password", v).await?;View on GitHub (pinned to 91c9fccbb0)
Solutions
- Ask the administrator to disable the 'disable changing permanent password' policy if the change is legitimate.
- Verify the setting with the security/options configuration and clear it locally if you control the machine.
- Use an alternative credential mechanism not blocked by the policy (e.g. unlock PIN) where allowed.
- If you build custom clients, enable the password-change option in the build configuration.
Defensive patterns
Strategy: try-catch
Try / catch
match set_permanent_password(pwd) {
Err(e) if e.to_string().contains("disabled") => {
eprintln!("password change is locked by policy; contact your admin");
}
other => other?,
} Prevention
- Check the disable-change-permanent-password option before offering the change in UI/automation
- Document policy locks in managed deployments
- Ship pre-checks in provisioning scripts so they fail fast with a clear message
When it happens
Trigger: Calling set_permanent_password (CLI --password or IPC) on an installation where the 'disable changing permanent password' security option / managed policy is enabled.
Common situations: Managed/corporate RustDesk deployments where admins lock the password policy; a local config option flipped by a previous run or custom client build; kiosk setups where credentials are fixed centrally.
Related errors
- Changing permanent password was rejected by daemon
- GetNamedSecurityInfoW failed for '{}': win32_error={}
AI-assisted analysis of rustdesk/rustdesk@91c9fccbb0 (2026-09-10).
Data as JSON: /api/errors/e4a5546a8f1ac77b.
Report an issue: GitHub.