Comfy-Org/ComfyUI · error · ValueError

username not provided

Error message

username not provided

What it means

UserManager.add_user strips the supplied name and requires a non-empty result; whitespace-only or empty names raise ValueError('username not provided') before any id is generated or users.json is written. This is pure input validation on the user-creation API.

Source

Thrown at app/user_manager.py:108

            if "%" in file:
                file = parse.unquote(file)

            # prevent leaving /{type}/{user}
            path = os.path.abspath(os.path.join(user_root, file))
            if os.path.commonpath((user_root, path)) != user_root:
                return None

        parent = os.path.split(path)[0]

        if create_dir and not os.path.exists(parent):
            os.makedirs(parent, exist_ok=True)

        return path

    def add_user(self, name):
        name = name.strip()
        if not name:
            raise ValueError("username not provided")
        if name.startswith(folder_paths.SYSTEM_USER_PREFIX):
            raise ValueError("System User prefix not allowed")
        user_id = re.sub("[^a-zA-Z0-9-_]+", '-', name)
        if user_id.startswith(folder_paths.SYSTEM_USER_PREFIX):
            raise ValueError("System User prefix not allowed")
        user_id = user_id + "_" + str(uuid.uuid4())

        self.users[user_id] = name

        with open(self.get_users_file(), "w") as f:
            json.dump(self.users, f)

        return user_id

    def add_routes(self, routes):
        self.settings.add_routes(routes)

        @routes.get("/users")

View on GitHub (pinned to 1c6d8d45b3)

Solutions

  1. Provide a non-blank display name, e.g. name="Alice".
  2. Validate client-side before calling the API: if not name or not name.strip(): show an error.
  3. Check the request payload key matches what the endpoint expects (name).

Example fix

# before
user_manager.add_user("   ")

# after
user_manager.add_user("Alice")
Defensive patterns

Strategy: validation

Validate before calling

name = name.strip() if isinstance(name, str) else ""
if not name:
    raise ValueError("username required")
user_manager.add_user(name)

Type guard

def is_valid_username(name) -> bool:
    return isinstance(name, str) and len(name.strip()) > 0

Try / catch

try:
    user_manager.add_user(name)
except ValueError as e:
    return web.Response(status=400, text=str(e))

Prevention

When it happens

Trigger: POSTing a new user with name "" or " "; a UI form submitted without entering a username; programmatic user creation passing an unset variable.

Common situations: Frontend form validation missing/bypassed; automation scripts iterating over an empty name field; JSON payload using the wrong key so name arrives as null/blank.

Related errors


AI-assisted analysis of Comfy-Org/ComfyUI@1c6d8d45b3 (2026-08-14). Data as JSON: /api/errors/f11240a2c7d109b6. Report an issue: GitHub.