makeplane/plane · error · CommandError
Password is too common please set a complex password
Error message
Password is too common please set a complex password
What it means
Raised by the `reset_password` Django management command when zxcvbn rates the entered password with a score below 3 (out of 4). zxcvbn scores 0-2 as weak/guessable, so the command rejects passwords it deems not strong. The check runs only after the blank-password and match guards pass, and is raised as a CommandError (non-zero exit).
Source
Thrown at apps/api/plane/db/management/commands/reset_password.py:59
# get password for the user
password = getpass.getpass("Password: ")
confirm_password = getpass.getpass("Password (again): ")
# If the passwords doesn't match raise error
if password != confirm_password:
self.stderr.write("Error: Your passwords didn't match.")
return
# Blank passwords should not be allowed
if password.strip() == "":
self.stderr.write("Error: Blank passwords aren't allowed.")
return
results = zxcvbn(password)
if results["score"] < 3:
raise CommandError("Password is too common please set a complex password")
# Set user password
user.set_password(password)
user.is_password_autoset = False
user.save()
self.stdout.write(self.style.SUCCESS("User password updated successfully"))
View on GitHub (pinned to 1c8a60f858)
Solutions
- Enter a password zxcvbn scores 3+: 12+ mixed-case characters with symbols and digits, avoiding dictionary words and the user's email/name.
- Run the password through a zxcvbn checker beforehand and aim for score 3 or 4 before submitting it to the command.
- If you must script it, generate a strong random password (e.g. `openssl rand -base64 18`) and feed it via getpass-compatible stdin.
- Note the threshold is hardcoded to `< 3` at reset_password.py:58; lowering it requires editing the source.
Example fix
// before password = "plane123" // zxcvbn score ~1 // after password = "7qK$mP2!vR9wLx#" // zxcvbn score 4
Defensive patterns
Strategy: validation
Validate before calling
from zxcvbn import zxcvbn
def is_password_strong_enough(password: str) -> bool:
# reset_password.py:58 rejects scores < 3
return zxcvbn(password)["score"] >= 3
# prompt again if not
while not is_password_strong_enough(pw):
pw = getpass.getpass("Password: ") Prevention
- Pre-test passwords with zxcvbn before running reset_password.
- Generate random 16+ char passwords for scripted resets.
- Avoid embedding the user's email or display name in the password.
When it happens
Trigger: Running `python manage.py reset_password <email>` interactively, entering two matching non-blank passwords, where zxcvbn scores the result 0, 1, or 2. Common with dictionary words, short passwords, passwords containing the user's email/name fragments, or repeated/sequential characters.
Common situations: Operators resetting a locked-out user's password via the CLI; using a simple word plus a digit (e.g. `plane123`); reusing a password derived from the user's email handle; automating the command in a script that pipes in a weak value.
Related errors
AI-assisted analysis of makeplane/plane@1c8a60f858 (2026-08-12).
Data as JSON: /api/errors/7f7fa1c496b6112b.
Report an issue: GitHub.