makeplane/plane · error · CommandError
User not member in workspace
Error message
User not member in workspace
What it means
Raised by `create_project_member` when the user is not an ACTIVE member of the project's workspace: `WorkspaceMember.objects.filter(workspace=project.workspace, member=user, is_active=True).exists()` is False (lines 51-52). Project membership requires active workspace membership first. Swallowed by the command's `except CommandError`.
Source
Thrown at apps/api/plane/db/management/commands/create_project_member.py:52
project_id = options["project_id"]
user_email = options["user_email"]
role = options.get("role", 20)
print(f"Role: {role}")
user = User.objects.filter(email=user_email).first()
if not user:
raise CommandError("User not found")
# Check if the project exists
project = Project.objects.filter(pk=project_id).first()
if not project:
raise CommandError("Project not found")
# Check if the user exists in the workspace
if not WorkspaceMember.objects.filter(workspace=project.workspace, member=user, is_active=True).exists():
raise CommandError("User not member in workspace")
if ProjectMember.objects.filter(project=project, member=user).exists():
# Update the project member
ProjectMember.objects.filter(project=project, member=user).update(
is_active=True, role=role
)
else:
# Create the project member
ProjectMember.objects.create(project=project, member=user, role=role)
# Issue Property
ProjectUserProperty.objects.get_or_create(user=user, project=project)
# Success message
self.stdout.write(self.style.SUCCESS(f"User {user_email} added to project {project_id}"))
return
except CommandError as e:View on GitHub (pinned to 1c8a60f858)
Solutions
- Add/reactivate the workspace member first (see `reactivate_workspace_member` command, errors 95-99).
- Verify membership: `python manage.py shell -c "from plane.db.models import WorkspaceMember; print(WorkspaceMember.objects.filter(member__email='x@example.com', is_active=True).values('workspace__slug'))"`
- Ensure `is_active=True` on the WorkspaceMember row before re-running.
Example fix
# before: user not an active workspace member python manage.py create_project_member --project_id <uuid> --user_email x@example.com # after: reactivate workspace membership first python manage.py reactivate_workspace_member <slug> x@example.com python manage.py create_project_member --project_id <uuid> --user_email x@example.com
Defensive patterns
Strategy: validation
Validate before calling
python manage.py shell -c "from plane.db.models import WorkspaceMember; import sys; sys.exit(0 if WorkspaceMember.objects.filter(member__email='x@example.com', is_active=True).exists() else 1)"
Type guard
def is_active_workspace_member(slug: str, email: str) -> bool:
from plane.db.models import WorkspaceMember
return WorkspaceMember.objects.filter(workspace__slug=slug, member__email=email, is_active=True).exists() Try / catch
# Command swallows CommandError; ensure active workspace membership first. # If inactive, run: reactivate_workspace_member <slug> <email>
Prevention
- Ensure the user is an ACTIVE workspace member before adding to a project.
- Reactivate removed members via reactivate_workspace_member first.
- Pre-check is_active=True on the WorkspaceMember row.
When it happens
Trigger: The user was never added to the workspace, was removed (deactivated), or their WorkspaceMember row has `is_active=False`.
Common situations: Member was removed from the workspace but you try to re-add them to a project directly; user invited to workspace but never accepted; attempting to bypass workspace membership.
Related errors
- Error: User {email} is not a member of workspace {slug}
- User email is required and should have signed in plane
- Please provide the email of the admin.
- User with the provided email does not exist.
- Project ID is required
AI-assisted analysis of makeplane/plane@1c8a60f858 (2026-08-12).
Data as JSON: /api/errors/8f65f8d6b1dad11e.
Report an issue: GitHub.