Skip to content

RBAC and GAC#429

Open
danciaclara wants to merge 7 commits intomasterfrom
rbac-and-gac
Open

RBAC and GAC#429
danciaclara wants to merge 7 commits intomasterfrom
rbac-and-gac

Conversation

@danciaclara
Copy link
Copy Markdown
Collaborator

@danciaclara danciaclara commented Apr 15, 2026

Description

Type of Change

  • Bug fix (non-breaking change which fixes an issue)
  • Feature (non-breaking change which adds functionality)
  • Improvement (change that would cause existing functionality to not work as expected)
  • Code refactoring
  • Performance improvements
  • Documentation update

Screenshots and Media (if applicable)

Test Scenarios

References

Summary by CodeRabbit

  • Documentation

    • Added a complete Roles & Permissions section: overview, member roles, permission schemes, permissions matrix, and custom roles; removed legacy role/permissions pages.
    • Updated role names/behavior (Project Member → Contributor; Guest view access → Commenter), guest-restriction rules, last-owner/last-admin warnings, CSV import role slugs, and related docs cross-links and examples.
  • Chores

    • Updated docs navigation/sidebar to surface “Manage members” and adjusted links; added redirects from legacy role/permissions URLs.

@vercel
Copy link
Copy Markdown

vercel bot commented Apr 15, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
docs Ready Ready Preview, Comment Apr 17, 2026 10:56am

Request Review

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 15, 2026

📝 Walkthrough

Walkthrough

Reorganizes documentation: removes legacy workspace-role pages, adds a new roles-and-permissions section with multiple pages, updates workspace/project member docs and sidebar entries, and adds Vercel redirects from old workspaces-and-users routes to new roles-and-permissions routes.

Changes

Cohort / File(s) Summary
VitePress nav & redirects
docs/.vitepress/config.ts, vercel.json
Sidebar updated to surface a top-level “Manage members” item and a commented replacement of the old Members block; added redirects from /workspaces-and-users/permissions/roles-and-permissions/permissions-matrix and /workspaces-and-users/roles/roles-and-permissions/member-roles.
Removed legacy files
docs/workspaces-and-users/permissions.md, docs/workspaces-and-users/roles.md
Deleted legacy permissions and roles reference pages and their embedded matrices.
New roles & permissions docs
docs/roles-and-permissions/overview.md, docs/roles-and-permissions/member-roles.md, docs/roles-and-permissions/permission-schemes.md, docs/roles-and-permissions/custom-roles.md, docs/roles-and-permissions/permissions-matrix.md
Added RBAC+GAC overview, system and custom role references, permission schemes guide, custom-role management, and a comprehensive permissions matrix.
Updated workspace & project docs
docs/core-concepts/workspaces/overview.md, docs/core-concepts/workspaces/members.md, docs/core-concepts/projects/manage-project-members.md, docs/introduction/tutorials/invite-members.md
Revised role terminology (e.g., Member → Contributor), updated links to new docs, changed CSV import examples to role slugs (with numeric backward-compatibility note), adjusted member invite/leave/removal guidance and guest-role constraints; removed project-level Guest toggle content.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Poem

🐰 I hopped through pages, nudged a sign or two,

New roles unfurled where the old ones flew.
Schemes and matrices bloom in tidy rows,
Redirects guide wanderers where knowledge grows.
A hop, a nibble, docs all fresh and new.

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Title check ⚠️ Warning The title 'RBAC and GAC' is vague and uses acronyms without context, failing to clearly communicate the main purpose of the changeset to someone unfamiliar with the project. Replace with a descriptive title summarizing the primary change, such as 'Reorganize documentation for roles, permissions, and access control' or 'Add roles and permissions documentation structure'.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch rbac-and-gac

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 8

🧹 Nitpick comments (2)
docs/roles-and-permissions/custom-roles.md (1)

89-91: “One-time inheritance” label is misleading for described behavior.

The note describes ongoing linkage to system scheme updates, not one-time inheritance. Consider renaming the callout title to avoid confusion.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/roles-and-permissions/custom-roles.md` around lines 89 - 91, The callout
title "One-time inheritance" is misleading because the text describes live
linkage to the system scheme; change the callout header token from "One-time
inheritance" (the ::: info block title) to a clearer label such as "Linked
inheritance" or "Live inheritance" and update the callout body if necessary to
match the new title so the header and description are consistent (look for the
::: info One-time inheritance block and replace the title token and any
contradictory wording).
docs/roles-and-permissions/member-roles.md (1)

54-56: Consider varying sentence starts in this paragraph.

Minor readability nit: consecutive sentences begin with “Project Admin...”.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/roles-and-permissions/member-roles.md` around lines 54 - 56, The two
consecutive sentences both start with "Project Admin", making the paragraph
repetitive; edit the sentences that reference "Project Admin" and "Project
Admins" to vary sentence openings — e.g., keep the first sentence describing
permissions ("Project Admin has full control..."), change the second to start
with a pronoun or role-based lead ("They can also delete or archive the project
itself.") or restructure into one fluent sentence, and ensure the following
guidance sentence ("Use Project Admin for...") remains distinct; update
occurrences of "Project Admin" and "Project Admins" in this paragraph
accordingly.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@docs/roles-and-permissions/custom-roles.md`:
- Around line 12-13: The markdown references dead routes
"/roles-and-permissions/member-roles-and-permissions" and
"/workspaces-and-users/create-permission-schemes"; update those anchor URLs to
the current roles-and-permissions routes used elsewhere in the docs (replace
each occurrence at the mentions around the first block and also occurrences near
lines 48-49 and 95-97). Locate the link markup text "[Roles and permissions]"
and "[Create permission schemes]" and swap their hrefs to the new, existing
routes used by the site (or update them to relative paths that match the current
roles-and-permissions section), ensuring all three occurrences are replaced
consistently.

In `@docs/roles-and-permissions/member-roles.md`:
- Line 10: Update the two stale links that point to removed routes by replacing
occurrences of the dead paths
"/roles-and-permissions/member-roles-and-permissions" and
"/workspaces-and-users/create-custom-roles" in the document (seen in the text
"For the conceptual background..." and the other occurrences around lines 133
and 149) with the current, canonical routes for those pages; find the correct
target URLs by searching the docs for the pages titled "Roles and permissions"
and "Create custom roles" and update the anchor hrefs so navigation no longer
fails.

In `@docs/roles-and-permissions/overview.md`:
- Around line 24-33: Add a language identifier to the fenced code block
containing the workspace hierarchy (the triple-backtick block that starts at the
diagram showing "Workspace ├── Project ...") to satisfy markdownlint MD040; for
example, change the opening fence from ``` to ```text so the block is explicitly
marked as plain text and the linter stops flagging it.
- Around line 135-136: Update the two dead links by changing the href targets
for the "Create custom roles" and "Create permission schemes" anchor texts to
the new routes under roles-and-permissions; replace the deprecated
/workspaces-and-users/create-custom-roles with the new
/roles-and-permissions/create-custom-roles and replace
/workspaces-and-users/create-permission-schemes with
/roles-and-permissions/create-permission-schemes so the links in the lines
containing "Create custom roles" and "Create permission schemes" point to the
correct pages.

In `@docs/roles-and-permissions/permission-schemes.md`:
- Line 10: This page contains dead internal links (e.g. the hrefs
"/roles-and-permissions/member-roles-and-permissions",
"/workspaces-and-users/create-custom-roles",
"/workspaces-and-users/disable-system-roles") that trigger VitePress CI
warnings; update each broken anchor to the correct relative doc path or use the
canonical permalinks used elsewhere in the site, ensuring link targets exist and
use consistent trailing slashes (or remove them) so VitePress can resolve
them—search for those exact strings in the file (and the similar occurrences
around lines 94–96) and replace them with the correct routes used by the docs
site.

In `@docs/roles-and-permissions/permissions-matrix.md`:
- Line 10: The markdown contains dead links pointing to
/roles-and-permissions/member-roles-and-permissions (e.g., the sentence "For
conceptual background, see [Roles and
permissions](/roles-and-permissions/member-roles-and-permissions)"); update
those link targets to /roles-and-permissions/overview everywhere they appear
(also replace any other occurrences of
/roles-and-permissions/member-roles-and-permissions such as the second instance
near the bottom), ensuring the link text remains correct and the new URL is used
consistently.
- Around line 21-23: Update the first paragraph so it matches the actual tables:
instead of saying "The Owner column is omitted from individual tables and
assumed ✓ throughout," change the wording to state that the Owner column is
included in the workspace tables and that Workspace Owner holds a full-access
wildcard (appearing as ✓ throughout). Also ensure the following sentence about
"Workspace Admin and Owner bypass projects" remains accurate and consistent with
the new Owner wording.
- Line 570: Update the markdown link "[Create custom
roles](/workspaces-and-users/create-custom-roles)" to point to the new
documentation route (replace the old /workspaces-and-users path with the current
docs path for custom roles), i.e. locate the link text "Create custom roles" in
permissions-matrix.md and change its target URL to the new
/roles-and-permissions/create-custom-roles (or the project's canonical new
route) so CI no longer flags the outdated path.

---

Nitpick comments:
In `@docs/roles-and-permissions/custom-roles.md`:
- Around line 89-91: The callout title "One-time inheritance" is misleading
because the text describes live linkage to the system scheme; change the callout
header token from "One-time inheritance" (the ::: info block title) to a clearer
label such as "Linked inheritance" or "Live inheritance" and update the callout
body if necessary to match the new title so the header and description are
consistent (look for the ::: info One-time inheritance block and replace the
title token and any contradictory wording).

In `@docs/roles-and-permissions/member-roles.md`:
- Around line 54-56: The two consecutive sentences both start with "Project
Admin", making the paragraph repetitive; edit the sentences that reference
"Project Admin" and "Project Admins" to vary sentence openings — e.g., keep the
first sentence describing permissions ("Project Admin has full control..."),
change the second to start with a pronoun or role-based lead ("They can also
delete or archive the project itself.") or restructure into one fluent sentence,
and ensure the following guidance sentence ("Use Project Admin for...") remains
distinct; update occurrences of "Project Admin" and "Project Admins" in this
paragraph accordingly.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 917187de-4387-46ca-9995-a442e6ab33ea

📥 Commits

Reviewing files that changed from the base of the PR and between c467a3d and 86f492f.

📒 Files selected for processing (13)
  • docs/.vitepress/config.ts
  • docs/core-concepts/projects/manage-project-members.md
  • docs/core-concepts/workspaces/members.md
  • docs/core-concepts/workspaces/overview.md
  • docs/introduction/tutorials/invite-members.md
  • docs/roles-and-permissions/custom-roles.md
  • docs/roles-and-permissions/member-roles.md
  • docs/roles-and-permissions/overview.md
  • docs/roles-and-permissions/permission-schemes.md
  • docs/roles-and-permissions/permissions-matrix.md
  • docs/workspaces-and-users/permissions.md
  • docs/workspaces-and-users/roles.md
  • vercel.json
💤 Files with no reviewable changes (2)
  • docs/workspaces-and-users/permissions.md
  • docs/workspaces-and-users/roles.md

Comment thread docs/roles-and-permissions/custom-roles.md Outdated
Comment thread docs/roles-and-permissions/member-roles.md Outdated
Comment on lines +24 to +33
```
Workspace
├── Project
│ ├── Work items, Epics, Modules, Cycles
│ ├── Pages, Views, Intake
│ └── Labels, States, Estimates, ...
├── Teamspace ──(grants access to)──► Project
├── Wiki, Initiatives, Releases, Dashboards
└── Integrations, Webhooks, Analytics, ...
```
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Add a language to the fenced code block.

Line 24 uses a fenced code block without a language, which triggers markdownlint (MD040).

Proposed fix
-```
+```text
 Workspace
   ├── Project
   │     ├── Work items, Epics, Modules, Cycles
   │     ├── Pages, Views, Intake
   │     └── Labels, States, Estimates, ...
   ├── Teamspace ──(grants access to)──► Project
   ├── Wiki, Initiatives, Releases, Dashboards
   └── Integrations, Webhooks, Analytics, ...
</details>

<!-- suggestion_start -->

<details>
<summary>📝 Committable suggestion</summary>

> ‼️ **IMPORTANT**
> Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

```suggestion

🧰 Tools
🪛 markdownlint-cli2 (0.22.0)

[warning] 24-24: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/roles-and-permissions/overview.md` around lines 24 - 33, Add a language
identifier to the fenced code block containing the workspace hierarchy (the
triple-backtick block that starts at the diagram showing "Workspace ├── Project
...") to satisfy markdownlint MD040; for example, change the opening fence from
``` to ```text so the block is explicitly marked as plain text and the linter
stops flagging it.

Comment thread docs/roles-and-permissions/overview.md Outdated
Comment on lines +135 to +136
- To create custom roles, see [Create custom roles](/workspaces-and-users/create-custom-roles).
- To build reusable permission bundles, see [Create permission schemes](/workspaces-and-users/create-permission-schemes). No newline at end of file
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Fix dead links to custom roles and permission schemes pages.

Line 135 and Line 136 point to deprecated paths that CI already flags as dead. Update these to the new roles-and-permissions routes.

Proposed fix
-- To create custom roles, see [Create custom roles](/workspaces-and-users/create-custom-roles).
-- To build reusable permission bundles, see [Create permission schemes](/workspaces-and-users/create-permission-schemes).
+- To create custom roles, see [Create custom roles](/roles-and-permissions/custom-roles).
+- To build reusable permission bundles, see [Create permission schemes](/roles-and-permissions/permission-schemes).
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- To create custom roles, see [Create custom roles](/workspaces-and-users/create-custom-roles).
- To build reusable permission bundles, see [Create permission schemes](/workspaces-and-users/create-permission-schemes).
- To create custom roles, see [Create custom roles](/roles-and-permissions/custom-roles).
- To build reusable permission bundles, see [Create permission schemes](/roles-and-permissions/permission-schemes).
🧰 Tools
🪛 LanguageTool

[style] ~135-~135: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...pts/projects/manage-project-members). - To create custom roles, see [Create custom...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~136-~136: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...paces-and-users/create-custom-roles). - To build reusable permission bundles, see ...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/roles-and-permissions/overview.md` around lines 135 - 136, Update the
two dead links by changing the href targets for the "Create custom roles" and
"Create permission schemes" anchor texts to the new routes under
roles-and-permissions; replace the deprecated
/workspaces-and-users/create-custom-roles with the new
/roles-and-permissions/create-custom-roles and replace
/workspaces-and-users/create-permission-schemes with
/roles-and-permissions/create-permission-schemes so the links in the lines
containing "Create custom roles" and "Create permission schemes" point to the
correct pages.

Comment thread docs/roles-and-permissions/permission-schemes.md Outdated
Comment thread docs/roles-and-permissions/permissions-matrix.md Outdated
Comment thread docs/roles-and-permissions/permissions-matrix.md
Comment thread docs/roles-and-permissions/permissions-matrix.md Outdated
Comment thread docs/roles-and-permissions/overview.md Outdated

**Role-Based Access Control (RBAC)** is the foundation. Every user holds a role — Owner, Admin, Member, Guest, Contributor, Commenter, or a custom role you've defined — and that role carries a defined set of permissions.

**Granular Access Control (GAC)** sits on top. It lets you grant or deny specific permissions to specific users on specific resources, independent of their role. A Member could be denied "delete work items" on one particular project, or a Guest could be granted "edit" on a specific page. GAC is for the exceptions — situations where role-level access is too coarse.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@danciaclara Guest could be granted "edit" on a specific page, this might be a bad example to convey the possibilities of GAC, as the Guest (or any system) role is not editable

Comment thread docs/roles-and-permissions/overview.md Outdated
└── Integrations, Webhooks, Analytics, ...
```

Permissions inherit upward. If a user has Admin on a project, they have access to everything inside that project. If a user has Admin on the workspace, they have access to all projects and their content via wildcard grants.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@danciaclara "wildcard grants", this is an internal technical term we're using in the code. We're not providing anything like "wildcard grants" in the UI (for system roles or custom roles), so it's better to remove this wording.

Comment thread docs/roles-and-permissions/overview.md Outdated
| -------------------------------------------- | ---- | --- | -------- | ---------- |
| Workspace Admin, Member, Guest | ✓ | ✓ | ✓ | ✓ |
| Project Admin, Contributor, Commenter, Guest | ✓ | ✓ | ✓ | ✓ |
| **Workspace Owner role** | — | — | ✓ | ✓ |
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@danciaclara Workspace owner is for all the plans. Workspace Admin is for Business and Enterprise.

Comment thread docs/roles-and-permissions/overview.md Outdated
Comment on lines +81 to +82
1. **Explicit DENY** on this exact resource → access denied.
2. **Explicit GRANT** on this exact resource → access allowed.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@danciaclara These 2 are future scope, we can probably keep it but there is no way right now to do explicit deny or grant permissions on resource

Comment thread docs/roles-and-permissions/overview.md Outdated

**Teamspace → project link relations.** A teamspace can be linked to one or more projects, and the link carries a role. All teamspace members get that role on the linked project without a separate project membership being created. A user can have both a direct project membership and teamspace-derived access — both are evaluated, and access resolves to whichever permits the action.

**Guest ceiling.** Workspace Guests are restricted from receiving high-privilege project roles. When you add a workspace Guest to a project, you can only assign them the Guest or Commenter role. Attempting to assign Admin or Contributor returns an error. This prevents privilege escalation through project assignment.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@danciaclara This can be further expanded to convey that, "A workspace guest can't be assigned to a custom role at project"


Owner is the highest workspace role. It carries full access to everything in the workspace, including the two operations no other role can perform: deleting the workspace and transferring ownership to another user.

Owner exists from the Business plan onwards. On Free and Pro, Admin is the highest role and there is no separate Owner.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@danciaclara We're giving Owner to all the plans and Admin to business/enterprise

Comment on lines +112 to +120
Roles have an internal authority level used to enforce who can manage whom. A user can only modify members whose role level is lower than their own.

| Role | Level |
| ------------------------------------------------------------- | ----- |
| Owner (workspace) | 25 |
| Admin (workspace, project) | 20 |
| Member (workspace), Contributor (project), Member (teamspace) | 15 |
| Commenter (project) | 10 |
| Guest (workspace, project) | 5 |
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@danciaclara We're not following this integer hierarchy. This is there in the codebase but it's just dead code for now. Let's not add this to documentation


## Why use permission schemes

You could theoretically attach permissions directly to a role, but schemes give you three advantages:
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@danciaclara This is not possible even theoretically with the recently made changes. Can't attach permissions directly to a role, can only attach permission schemes

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

♻️ Duplicate comments (6)
docs/roles-and-permissions/permissions-matrix.md (1)

21-21: ⚠️ Potential issue | 🟡 Minor

Make the Owner note match the tables.

The intro says the Owner column is omitted, but the workspace tables below include Owner explicitly.

Suggested change
-**Owner has full access.** Workspace Owner holds a full-access wildcard and matches every permission in this document. The Owner column is omitted from individual tables and assumed ✓ throughout.
+**Owner has full access.** Workspace Owner holds full access and appears as ✓ throughout the workspace tables in this document.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/roles-and-permissions/permissions-matrix.md` at line 21, Update the
introductory Owner note to match the actual tables by removing the claim that
the "Owner column is omitted" and instead state that the Owner column is
included and that Workspace Owner holds full-access (wildcard) and is
represented with ✓ in the tables; edit the sentence starting with "**Owner has
full access.** Workspace Owner holds a full-access wildcard..." so it no longer
says the Owner column is omitted and explicitly aligns with the tables that
include an `Owner` column.
docs/roles-and-permissions/overview.md (3)

24-33: ⚠️ Potential issue | 🟡 Minor

Add a language to the fenced diagram block.

Use text on the opening fence so markdownlint stops flagging this section.

Suggested change
-```
+```text
 Workspace
   ├── Project
   │     ├── Work items, Epics, Modules, Cycles
   │     ├── Pages, Views, Intake
   │     └── Labels, States, Estimates, ...
   ├── Teamspace ──(grants access to)──► Project
   ├── Wiki, Initiatives, Releases, Dashboards
   └── Integrations, Webhooks, Analytics, ...
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against the current code and only fix it if needed.

In @docs/roles-and-permissions/overview.md around lines 24 - 33, The fenced
ASCII diagram block in overview.md is missing a language tag which triggers
markdownlint; update the opening fence for that diagram block to specify the
language "text" (i.e., change the triple backtick that precedes the diagram to


49-55: ⚠️ Potential issue | 🟠 Major

This “what changed” section contradicts the role model above.

It says “Two things” but lists three bullets, and the first bullet collapses Workspace Admin into Workspace Owner even though the plan table above still treats Workspace Admin as a separate role. Please rewrite this section to describe the current model instead of presenting those roles as a rename.

Suggested change
-## What changed from earlier versions
-
-Two things were renamed or restructured rather than added:
-
-- **"Workspace Admin" is now called "Workspace Owner."** 
+## What changed from earlier versions
+
+A few names and access patterns changed:
+
+- **Workspace Owner and Workspace Admin are distinct roles.** Owner exists across plans; Workspace Admin is a higher-privilege role on Business and Enterprise.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/roles-and-permissions/overview.md` around lines 49 - 55, Update the
"What changed from earlier versions" section (header "What changed from earlier
versions") to accurately describe the current role model rather than implying
simple renames: remove "Two things" and instead state that the roles now include
Workspace Owner, Workspace Admin (if still distinct per the plan table),
Contributor (replaces Project Member), and Commenter (replaces the previous
guest view toggle), and explicitly explain the mapping (e.g., "Project Member →
Contributor" and "guest view toggle → Commenter role") so the bullets match the
plan table above and no roles are incorrectly collapsed (do not drop Workspace
Admin if the plan table still lists it). Ensure the three bullets are corrected
to reflect these mappings and that the language clarifies the current behavior:
Commenter grants view + comment permissions rather than a toggle.

16-19: ⚠️ Potential issue | 🟠 Major

Don't present per-resource grant/deny as shipped behavior.

This section says GAC can explicitly allow or deny a permission on one specific resource. That reads like current product functionality, not a future direction, and the examples will send readers looking for controls that may not exist.

Suggested change
-**Granular Access Control (GAC)** sits on top. It lets you grant or deny specific permissions to specific users on specific resources, independent of their role. A Contributor could be denied "delete work items" on one particular project while keeping that permission everywhere else, or a specific user could be granted temporary edit access to a single page for the duration of an external review — all without changing anyone's role. GAC is for the exceptions — situations where role-level access is too coarse.
+**Granular Access Control (GAC)** sits on top. In practice, Plane further refines role-based access with conditional rules such as creator-scoped and lead-scoped permissions on specific resources. Use it for exceptions where the base role alone is too coarse.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/roles-and-permissions/overview.md` around lines 16 - 19, Update the GAC
paragraph to avoid implying per-resource allow/deny is current shipped behavior:
in the "Granular Access Control (GAC)" section, change the language to
explicitly mark per-resource grant/deny examples as hypothetical or planned
(e.g., "illustrative / planned behavior" or "in future releases") and/or
indicate current availability (what's supported today and where to find
controls). Remove definitive phrasing that a Contributor "could be denied" on a
specific project and replace with a clarifying sentence such as "This describes
planned/illustrative GAC capabilities; check the product docs or release notes
for current availability." Also update the examples to be clearly labeled as
illustrative scenarios rather than existing features.
docs/roles-and-permissions/member-roles.md (2)

108-115: ⚠️ Potential issue | 🟠 Major

Avoid documenting the internal role-level hierarchy here.

“Internal authority level” reads like a supported product model, but the actionable rules are the bullets below. If the UI/API only guarantees those concrete rules, keep the section at that level instead of documenting the hidden hierarchy.

Suggested change
-## Role hierarchy
-
-Roles have an internal authority level used to enforce who can manage whom. A user can only modify members whose role level is lower than their own.
+## Role management rules
 
 - Only Owners can manage other Owners.
 - Owners and Admins can manage Admins.
 - The last Admin or Owner of a workspace cannot leave or be demoted (last-admin protection).
 - The last Admin of a project cannot leave (last-admin protection).
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/roles-and-permissions/member-roles.md` around lines 108 - 115, Remove
the sentence referencing an "internal authority level" from the "## Role
hierarchy" section and leave only the concrete, actionable bullets; specifically
edit the paragraph that says "Roles have an internal authority level used to
enforce who can manage whom. A user can only modify members whose role level is
lower than their own." so it is deleted or replaced with a short lead-in that
does not imply a hidden model, and keep the four bullets ("Only Owners can
manage other Owners.", "Owners and Admins can manage Admins.", "The last Admin
or Owner of a workspace cannot leave or be demoted (last-admin protection).",
"The last Admin of a project cannot leave (last-admin protection).") unchanged.

22-24: ⚠️ Potential issue | 🟡 Minor

Use one plan name for Admin/custom-role availability.

This page uses Enterprise Grid, while overview.md uses Enterprise in the plan table. Please keep the entitlement label consistent across the new roles docs.

Suggested change
-### Admin <Badge type="tip" text="Business" /> <Badge type="warning" text="Enterprise Grid" />
+### Admin <Badge type="tip" text="Business" /> <Badge type="warning" text="Enterprise" />-## Custom roles <Badge type="warning" text="Enterprise Grid" />
+## Custom roles <Badge type="warning" text="Enterprise" />

Also applies to: 117-121

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/roles-and-permissions/member-roles.md` around lines 22 - 24, The docs
use two different plan labels; replace the badge text "Enterprise Grid" with the
consistent plan name used in overview (e.g., "Enterprise") across this file —
update the Admin heading badge (the line containing "Admin <Badge type=\"tip\"
text=\"Business\" /> <Badge type=\"warning\" text=\"Enterprise Grid\" />") and
all other role badges/mentions (including the section around 117-121) so every
badge.text and plain mention uses the same "Enterprise" entitlement label.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@docs/.vitepress/config.ts`:
- Around line 289-313: Unblock the commented sidebar group in
docs/.vitepress/config.ts so the "Roles and permissions" nav entry and its child
items become visible; specifically remove the block comment wrapping the object
whose text is "Roles and permissions" (and items linking to
"/roles-and-permissions/overview", "/roles-and-permissions/member-roles",
"/roles-and-permissions/permission-schemes",
"/roles-and-permissions/custom-roles",
"/roles-and-permissions/permissions-matrix") so those pages are reachable from
the hand-curated nav, and verify any new .md files under
docs/roles-and-permissions/ have corresponding links in that object.

In `@docs/roles-and-permissions/permissions-matrix.md`:
- Around line 255-260: The permissions matrix row for "Edit Issues" incorrectly
grants the Commenter role "+Creator", conflicting with member-roles.md which
states Commenters cannot create or edit work items; update the "Edit Issues"
cell for the Commenter column to "x" (or otherwise match the wording used in
member-roles.md) so both documents consistently show that Commenters cannot
create or edit work items, and double-check the "Create Issues" row also aligns
with member-roles.md for the Commenter role.
- Around line 542-562: The permissions summary table is out of sync with the
detailed tables—specifically reconcile the entries for Project Commenter
(currently "Edit and delete work items"), Project Contributor (mentions "project
assets"), Workspace Member ("wiki collections" and "Delete workspace drafts"),
and Project Guest ("View, edit, and delete intake items") so they match the
source tables; either remove these summary rows if those permissions don't exist
in the detailed tables or add/adjust the missing detailed table rows to reflect
these summary grants. Locate the matrix lines listing roles and permissions
(e.g., "Project Commenter", "Project Contributor", "Workspace Member", "Project
Guest") and update the summary text or the detailed tables until both are
consistent. Ensure all permission names exactly match the labels used elsewhere
(e.g., "Delete Issues", "project assets", "wiki collections", "workspace
drafts") to avoid future drift.
- Around line 144-154: The permissions matrix contradicts the explanatory note:
the rows "Edit Teamspaces", "Manage Teamspace Members", and "Delete Teamspaces"
currently mark Admin with ✓ but the note below states "Workspace Admin role
alone is not sufficient" and requires being the teamspace lead; update the
matrix to reflect the rule by changing the Admin cells for those three rows from
✓ to +Lead (or otherwise mark they require lead status) so the table and the
note are consistent, ensuring the entries "Edit Teamspaces", "Manage Teamspace
Members", and "Delete Teamspaces" explicitly indicate the lead requirement
rather than unconditional Admin permission.

---

Duplicate comments:
In `@docs/roles-and-permissions/member-roles.md`:
- Around line 108-115: Remove the sentence referencing an "internal authority
level" from the "## Role hierarchy" section and leave only the concrete,
actionable bullets; specifically edit the paragraph that says "Roles have an
internal authority level used to enforce who can manage whom. A user can only
modify members whose role level is lower than their own." so it is deleted or
replaced with a short lead-in that does not imply a hidden model, and keep the
four bullets ("Only Owners can manage other Owners.", "Owners and Admins can
manage Admins.", "The last Admin or Owner of a workspace cannot leave or be
demoted (last-admin protection).", "The last Admin of a project cannot leave
(last-admin protection).") unchanged.
- Around line 22-24: The docs use two different plan labels; replace the badge
text "Enterprise Grid" with the consistent plan name used in overview (e.g.,
"Enterprise") across this file — update the Admin heading badge (the line
containing "Admin <Badge type=\"tip\" text=\"Business\" /> <Badge
type=\"warning\" text=\"Enterprise Grid\" />") and all other role
badges/mentions (including the section around 117-121) so every badge.text and
plain mention uses the same "Enterprise" entitlement label.

In `@docs/roles-and-permissions/overview.md`:
- Around line 24-33: The fenced ASCII diagram block in overview.md is missing a
language tag which triggers markdownlint; update the opening fence for that
diagram block to specify the language "text" (i.e., change the triple backtick
that precedes the diagram to ```text) so the block starting with "Workspace" is
fenced as a text code block.
- Around line 49-55: Update the "What changed from earlier versions" section
(header "What changed from earlier versions") to accurately describe the current
role model rather than implying simple renames: remove "Two things" and instead
state that the roles now include Workspace Owner, Workspace Admin (if still
distinct per the plan table), Contributor (replaces Project Member), and
Commenter (replaces the previous guest view toggle), and explicitly explain the
mapping (e.g., "Project Member → Contributor" and "guest view toggle → Commenter
role") so the bullets match the plan table above and no roles are incorrectly
collapsed (do not drop Workspace Admin if the plan table still lists it). Ensure
the three bullets are corrected to reflect these mappings and that the language
clarifies the current behavior: Commenter grants view + comment permissions
rather than a toggle.
- Around line 16-19: Update the GAC paragraph to avoid implying per-resource
allow/deny is current shipped behavior: in the "Granular Access Control (GAC)"
section, change the language to explicitly mark per-resource grant/deny examples
as hypothetical or planned (e.g., "illustrative / planned behavior" or "in
future releases") and/or indicate current availability (what's supported today
and where to find controls). Remove definitive phrasing that a Contributor
"could be denied" on a specific project and replace with a clarifying sentence
such as "This describes planned/illustrative GAC capabilities; check the product
docs or release notes for current availability." Also update the examples to be
clearly labeled as illustrative scenarios rather than existing features.

In `@docs/roles-and-permissions/permissions-matrix.md`:
- Line 21: Update the introductory Owner note to match the actual tables by
removing the claim that the "Owner column is omitted" and instead state that the
Owner column is included and that Workspace Owner holds full-access (wildcard)
and is represented with ✓ in the tables; edit the sentence starting with
"**Owner has full access.** Workspace Owner holds a full-access wildcard..." so
it no longer says the Owner column is omitted and explicitly aligns with the
tables that include an `Owner` column.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: be35b260-4229-40cf-960e-0d3731f22f70

📥 Commits

Reviewing files that changed from the base of the PR and between 86f492f and 800bb0a.

📒 Files selected for processing (8)
  • docs/.vitepress/config.ts
  • docs/core-concepts/projects/manage-project-members.md
  • docs/core-concepts/workspaces/members.md
  • docs/roles-and-permissions/custom-roles.md
  • docs/roles-and-permissions/member-roles.md
  • docs/roles-and-permissions/overview.md
  • docs/roles-and-permissions/permission-schemes.md
  • docs/roles-and-permissions/permissions-matrix.md
✅ Files skipped from review due to trivial changes (2)
  • docs/roles-and-permissions/custom-roles.md
  • docs/roles-and-permissions/permission-schemes.md
🚧 Files skipped from review as they are similar to previous changes (2)
  • docs/core-concepts/workspaces/members.md
  • docs/core-concepts/projects/manage-project-members.md

Comment thread docs/.vitepress/config.ts Outdated
Comment on lines +289 to +313
/*
{
text: "Members",
text: "Roles and permissions",
collapsed: true,
link: "/roles-and-permissions/overview",
items: [
{
text: "Manage members",
link: "/core-concepts/workspaces/members",
text: "Member roles",
link: "/roles-and-permissions/member-roles",
},
{
text: "Permission schemes",
link: "/roles-and-permissions/permission-schemes",
},
{
text: "Custom roles",
link: "/roles-and-permissions/custom-roles",
},
{ text: "Member roles", link: "/workspaces-and-users/roles" },
{
text: "Permissions matrix",
link: "/workspaces-and-users/permissions",
link: "/roles-and-permissions/permissions-matrix",
},
],
},
*/
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Make the new roles docs visible in the sidebar.

This whole group is wrapped in a block comment, so every /roles-and-permissions/* page added in this PR is unreachable from the hand-curated nav.

Suggested change
-         /* 
          {
            text: "Roles and permissions",
            collapsed: true,
            link: "/roles-and-permissions/overview",
            items: [
              {
                text: "Member roles",
                link: "/roles-and-permissions/member-roles",
              },
              {
                text: "Permission schemes",
                link: "/roles-and-permissions/permission-schemes",
              },
              {
                text: "Custom roles",
                link: "/roles-and-permissions/custom-roles",
              },
              {
                text: "Permissions matrix",
                link: "/roles-and-permissions/permissions-matrix",
              },
            ],
          },
-          */

Based on learnings: When adding a new documentation page, create the .md file in the appropriate docs/ subdirectory, add an entry to the relevant sidebar section in config.ts, and add a top-nav link if needed.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
/*
{
text: "Members",
text: "Roles and permissions",
collapsed: true,
link: "/roles-and-permissions/overview",
items: [
{
text: "Manage members",
link: "/core-concepts/workspaces/members",
text: "Member roles",
link: "/roles-and-permissions/member-roles",
},
{
text: "Permission schemes",
link: "/roles-and-permissions/permission-schemes",
},
{
text: "Custom roles",
link: "/roles-and-permissions/custom-roles",
},
{ text: "Member roles", link: "/workspaces-and-users/roles" },
{
text: "Permissions matrix",
link: "/workspaces-and-users/permissions",
link: "/roles-and-permissions/permissions-matrix",
},
],
},
*/
{
text: "Roles and permissions",
collapsed: true,
link: "/roles-and-permissions/overview",
items: [
{
text: "Member roles",
link: "/roles-and-permissions/member-roles",
},
{
text: "Permission schemes",
link: "/roles-and-permissions/permission-schemes",
},
{
text: "Custom roles",
link: "/roles-and-permissions/custom-roles",
},
{
text: "Permissions matrix",
link: "/roles-and-permissions/permissions-matrix",
},
],
},
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/.vitepress/config.ts` around lines 289 - 313, Unblock the commented
sidebar group in docs/.vitepress/config.ts so the "Roles and permissions" nav
entry and its child items become visible; specifically remove the block comment
wrapping the object whose text is "Roles and permissions" (and items linking to
"/roles-and-permissions/overview", "/roles-and-permissions/member-roles",
"/roles-and-permissions/permission-schemes",
"/roles-and-permissions/custom-roles",
"/roles-and-permissions/permissions-matrix") so those pages are reachable from
the hand-curated nav, and verify any new .md files under
docs/roles-and-permissions/ have corresponding links in that object.

Comment on lines +144 to +154
| Permission | Owner | Admin | Member | Guest |
| ------------------------ | ----- | ----- | ------ | ----- |
| Browse Teamspaces | ✓ | ✓ | ✓ | x |
| View Teamspace Details | ✓ | ✓ | ✓ | x |
| Create Teamspaces | ✓ | ✓ | x | x |
| Edit Teamspaces | ✓ | ✓ | +Lead | x |
| Manage Teamspace Members | ✓ | ✓ | +Lead | x |
| Delete Teamspaces | ✓ | ✓ | +Lead | x |

Editing, deleting, or managing members on a teamspace requires being the teamspace lead. Workspace Admin role alone is not sufficient.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

The Teamspaces table contradicts its own note.

Lines 149-151 grant Admin unconditional teamspace edit/delete/member-management, but Line 153 says Admin alone is not sufficient and those actions require the lead condition. As written, readers get opposite answers from the same section.

Suggested change if Line 153 is the intended rule
-| Edit Teamspaces          | ✓     | ✓     | +Lead  | x     |
-| Manage Teamspace Members | ✓     | ✓     | +Lead  | x     |
-| Delete Teamspaces        | ✓     | ✓     | +Lead  | x     |
+| Edit Teamspaces          | ✓     | +Lead | +Lead  | x     |
+| Manage Teamspace Members | ✓     | +Lead | +Lead  | x     |
+| Delete Teamspaces        | ✓     | +Lead | +Lead  | x     |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/roles-and-permissions/permissions-matrix.md` around lines 144 - 154, The
permissions matrix contradicts the explanatory note: the rows "Edit Teamspaces",
"Manage Teamspace Members", and "Delete Teamspaces" currently mark Admin with ✓
but the note below states "Workspace Admin role alone is not sufficient" and
requires being the teamspace lead; update the matrix to reflect the rule by
changing the Admin cells for those three rows from ✓ to +Lead (or otherwise mark
they require lead status) so the table and the note are consistent, ensuring the
entries "Edit Teamspaces", "Manage Teamspace Members", and "Delete Teamspaces"
explicitly indicate the lead requirement rather than unconditional Admin
permission.

Comment on lines +255 to +260
| Permission | P-Admin | Contributor | Commenter | Guest |
| ---------------------- | ------- | ----------- | --------- | -------- |
| View Issues | ✓ | ✓ | ✓ | +Creator |
| Create Issues | ✓ | ✓ | x | x |
| Edit Issues | ✓ | ✓ | +Creator | +Creator |
| Bulk Edit Issues | ✓ | ✓ | x | x |
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Commenter issue-edit access conflicts with the role guide.

This table gives Commenter +Creator on Edit Issues, but member-roles.md says Commenters cannot create or edit work items and only interact through comments/intake. Please make both pages say the same thing.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/roles-and-permissions/permissions-matrix.md` around lines 255 - 260, The
permissions matrix row for "Edit Issues" incorrectly grants the Commenter role
"+Creator", conflicting with member-roles.md which states Commenters cannot
create or edit work items; update the "Edit Issues" cell for the Commenter
column to "x" (or otherwise match the wording used in member-roles.md) so both
documents consistently show that Commenters cannot create or edit work items,
and double-check the "Create Issues" row also aligns with member-roles.md for
the Commenter role.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (4)
docs/roles-and-permissions/permissions-matrix.md (3)

21-21: ⚠️ Potential issue | 🟡 Minor

Update documentation to match actual table structure.

Line 21 states "The Owner column is omitted from individual tables," but the workspace permission tables below (starting at line 31) explicitly include an Owner column. This was flagged in previous reviews but appears unresolved.

📝 Suggested clarification
-**Owner has full access.** Workspace Owner holds a full-access wildcard and matches every permission in this document. The Owner column is omitted from individual tables and assumed ✓ throughout.
+**Owner has full access.** Workspace Owner holds a full-access wildcard and matches every permission in this document. Workspace tables explicitly show the Owner column as ✓ throughout.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/roles-and-permissions/permissions-matrix.md` at line 21, Update the
sentence "The Owner column is omitted from individual tables and assumed ✓
throughout." to accurately reflect the current tables by either removing that
claim or changing it to state that the Owner column is explicitly present in the
workspace permission tables; locate and edit the exact line containing that
sentence ("The Owner column is omitted from individual tables...") in
permissions-matrix.md so the prose matches the actual tables starting at line
31, ensuring consistency between the description and the tables.

144-154: ⚠️ Potential issue | 🟠 Major

Resolve teamspace permission contradiction.

The table shows workspace Admin with unconditional ✓ for "Edit Teamspaces," "Manage Teamspace Members," and "Delete Teamspaces" (lines 149-151), but the explanatory note (line 153) states "Workspace Admin role alone is not sufficient" and requires being the teamspace lead. This internal contradiction was flagged in a previous review but remains unresolved.

🔧 Recommended fix based on the note's intent

If the note is correct (Admin requires +Lead for these operations), update the table:

-| Edit Teamspaces          | ✓     | ✓     | +Lead  | x     |
-| Manage Teamspace Members | ✓     | ✓     | +Lead  | x     |
-| Delete Teamspaces        | ✓     | ✓     | +Lead  | x     |
+| Edit Teamspaces          | ✓     | +Lead | +Lead  | x     |
+| Manage Teamspace Members | ✓     | +Lead | +Lead  | x     |
+| Delete Teamspaces        | ✓     | +Lead | +Lead  | x     |

Alternatively, if Admin does have unconditional access, remove or revise the note at line 153.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/roles-and-permissions/permissions-matrix.md` around lines 144 - 154, The
table and the explanatory note conflict: either change the three permission
cells for "Edit Teamspaces", "Manage Teamspace Members", and "Delete Teamspaces"
under the "Admin" column to "+Lead" (matching the note that "Workspace Admin
role alone is not sufficient") or keep the "✓" values and edit the note to state
that Workspace Admins can perform those actions unconditionally; update the rows
"Edit Teamspaces", "Manage Teamspace Members", and "Delete Teamspaces" and/or
the explanatory sentence mentioning "Workspace Admin role alone is not
sufficient" to make the intended behavior for the Workspace Admin role
consistent.

255-260: ⚠️ Potential issue | 🟠 Major

Fix Commenter edit permission inconsistency.

Line 259 grants Commenter "+Creator" access to "Edit Issues," but docs/roles-and-permissions/member-roles.md at line 74 explicitly states: "They cannot create or edit work items, modules, cycles, or pages." This was flagged in a previous review and remains unresolved.

🔧 Proposed fix to align with member-roles.md
-| Edit Issues            | ✓       | ✓           | +Creator  | +Creator |
+| Edit Issues            | ✓       | ✓           | x         | +Creator |

Please verify this change is correct and also check line 347 "Edit Intake Items" for Commenter, as intake items may have different rules than regular issues.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/roles-and-permissions/permissions-matrix.md` around lines 255 - 260, The
"Edit Issues" permission row in the permissions matrix incorrectly grants
Commenter "+Creator"; update the "Edit Issues" cell for the Commenter column
from "+Creator" to "x" to align with docs/roles-and-permissions/member-roles.md
(which states Commenters cannot create or edit work items), and while you're
editing the matrix also verify the "Edit Intake Items" row for the Commenter
(the entry near line 347) to ensure intake-item rules don't differ and adjust
that cell if necessary.
docs/roles-and-permissions/overview.md (1)

24-33: ⚠️ Potential issue | 🟡 Minor

Add language identifier to code block.

The fenced code block lacks a language identifier, triggering markdownlint rule MD040. Adding text will resolve the linting warning.

🔧 Proposed fix
-```
+```text
 Workspace
   ├── Project
   │     ├── Work items, Epics, Modules, Cycles

As per coding guidelines, formatting checks should pass before merging.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/roles-and-permissions/overview.md` around lines 24 - 33, The fenced
ASCII diagram code block in the markdown lacks a language identifier (triggering
MD040); update the fenced code block in the Roles and Permissions overview (the
triple-backtick block that begins with "Workspace" and the tree diagram) to
include a language tag such as `text` (e.g., change ``` to ```text) so the
markdown linter passes.
🧹 Nitpick comments (3)
docs/roles-and-permissions/overview.md (1)

10-10: Optional: Vary sentence structure for improved flow.

Three consecutive sentences begin with "If you..." While grammatically correct, varying the opening can enhance readability.

♻️ Optional rewording
-If you're looking for what a specific role can or can't do, see the [Permissions matrix](/roles-and-permissions/permissions-matrix). If you want a list of system roles, see [Member roles](/roles-and-permissions/member-roles). If you want to perform a task, see the how-to guides linked at the bottom of this page.
+For details on what a specific role can or can't do, see the [Permissions matrix](/roles-and-permissions/permissions-matrix). For a list of system roles, see [Member roles](/roles-and-permissions/member-roles). To perform a task, see the how-to guides linked at the bottom of this page.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/roles-and-permissions/overview.md` at line 10, The three consecutive
sentences "If you're looking for what a specific role...", "If you want a list
of system roles...", and "If you want to perform a task..." should be rewritten
to vary sentence openings for better flow; edit the paragraph to keep the same
links and meaning but change one or two sentence starters (e.g., turn one into a
statement like "See the Permissions matrix..." or use "For a list of system
roles, consult..." and rephrase the third to "To perform a task, refer to...")
so the phrasing is less repetitive while preserving links and intent.
docs/roles-and-permissions/permissions-matrix.md (1)

8-8: Optional: Add hyphen to compound modifier.

Consider "system-defined role" for clarity, though "system defined role" is acceptable.

-This is the exhaustive permissions reference for every system defined role in Plane.
+This is the exhaustive permissions reference for every system-defined role in Plane.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/roles-and-permissions/permissions-matrix.md` at line 8, Update the
sentence in permissions-matrix.md to use the hyphenated compound "system-defined
role" instead of "system defined role"; locate the line containing the phrase
"This is the exhaustive permissions reference for every system defined role in
Plane." and change it to "This is the exhaustive permissions reference for every
system-defined role in Plane." to apply the hyphenated modifier.
docs/roles-and-permissions/member-roles.md (1)

56-56: Optional: Consider varying sentence structure.

Three consecutive sentences begin with "Project Admins/Admin." While grammatically correct, varying the structure slightly can improve readability.

♻️ Optional rewording suggestion
-Project Admin has full control over the project — settings, members, work items, epics, cycles, modules, pages, views, intake, automations, workflows, labels, states, and estimates. Project Admins can also delete or archive the project itself.
+Project Admin has full control over the project — settings, members, work items, epics, cycles, modules, pages, views, intake, automations, workflows, labels, states, and estimates. This role can also delete or archive the project itself.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/roles-and-permissions/member-roles.md` at line 56, The three consecutive
sentences that begin with "Project Admin"/"Project Admins" should be rephrased
for variety and readability: modify the sentence starting "Project Admin has
full control over the project — settings, members, work items, epics, cycles,
modules, pages, views, intake, automations, workflows, labels, states, and
estimates." by either breaking the long list into a shorter sentence and using a
different subject for the following sentence(s) (for example, "They can also
delete or archive the project itself." or "Project Admins additionally have the
ability to delete or archive the project.") or by combining parts into a single
sentence that avoids repeating "Project Admins" at the start; ensure the meaning
(full control and ability to delete/archive) is preserved while varying sentence
openings.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@docs/roles-and-permissions/permissions-matrix.md`:
- Around line 542-561: The summary table contains undefined permission names
("project assets", "wiki collections", "workspace drafts") and inconsistent
phrasing for Intake ("intake work items" vs "Intake Items"); either add
corresponding detailed permission sections (with the same canonical names) for
Project Assets, Wiki Collections, and Workspace Drafts, or remove those three
rows from the summary; also standardize the Intake terminology by changing
"intake work items" to "Intake Items" (or vice versa) so the summary matches the
detailed table exactly.

---

Duplicate comments:
In `@docs/roles-and-permissions/overview.md`:
- Around line 24-33: The fenced ASCII diagram code block in the markdown lacks a
language identifier (triggering MD040); update the fenced code block in the
Roles and Permissions overview (the triple-backtick block that begins with
"Workspace" and the tree diagram) to include a language tag such as `text`
(e.g., change ``` to ```text) so the markdown linter passes.

In `@docs/roles-and-permissions/permissions-matrix.md`:
- Line 21: Update the sentence "The Owner column is omitted from individual
tables and assumed ✓ throughout." to accurately reflect the current tables by
either removing that claim or changing it to state that the Owner column is
explicitly present in the workspace permission tables; locate and edit the exact
line containing that sentence ("The Owner column is omitted from individual
tables...") in permissions-matrix.md so the prose matches the actual tables
starting at line 31, ensuring consistency between the description and the
tables.
- Around line 144-154: The table and the explanatory note conflict: either
change the three permission cells for "Edit Teamspaces", "Manage Teamspace
Members", and "Delete Teamspaces" under the "Admin" column to "+Lead" (matching
the note that "Workspace Admin role alone is not sufficient") or keep the "✓"
values and edit the note to state that Workspace Admins can perform those
actions unconditionally; update the rows "Edit Teamspaces", "Manage Teamspace
Members", and "Delete Teamspaces" and/or the explanatory sentence mentioning
"Workspace Admin role alone is not sufficient" to make the intended behavior for
the Workspace Admin role consistent.
- Around line 255-260: The "Edit Issues" permission row in the permissions
matrix incorrectly grants Commenter "+Creator"; update the "Edit Issues" cell
for the Commenter column from "+Creator" to "x" to align with
docs/roles-and-permissions/member-roles.md (which states Commenters cannot
create or edit work items), and while you're editing the matrix also verify the
"Edit Intake Items" row for the Commenter (the entry near line 347) to ensure
intake-item rules don't differ and adjust that cell if necessary.

---

Nitpick comments:
In `@docs/roles-and-permissions/member-roles.md`:
- Line 56: The three consecutive sentences that begin with "Project
Admin"/"Project Admins" should be rephrased for variety and readability: modify
the sentence starting "Project Admin has full control over the project —
settings, members, work items, epics, cycles, modules, pages, views, intake,
automations, workflows, labels, states, and estimates." by either breaking the
long list into a shorter sentence and using a different subject for the
following sentence(s) (for example, "They can also delete or archive the project
itself." or "Project Admins additionally have the ability to delete or archive
the project.") or by combining parts into a single sentence that avoids
repeating "Project Admins" at the start; ensure the meaning (full control and
ability to delete/archive) is preserved while varying sentence openings.

In `@docs/roles-and-permissions/overview.md`:
- Line 10: The three consecutive sentences "If you're looking for what a
specific role...", "If you want a list of system roles...", and "If you want to
perform a task..." should be rewritten to vary sentence openings for better
flow; edit the paragraph to keep the same links and meaning but change one or
two sentence starters (e.g., turn one into a statement like "See the Permissions
matrix..." or use "For a list of system roles, consult..." and rephrase the
third to "To perform a task, refer to...") so the phrasing is less repetitive
while preserving links and intent.

In `@docs/roles-and-permissions/permissions-matrix.md`:
- Line 8: Update the sentence in permissions-matrix.md to use the hyphenated
compound "system-defined role" instead of "system defined role"; locate the line
containing the phrase "This is the exhaustive permissions reference for every
system defined role in Plane." and change it to "This is the exhaustive
permissions reference for every system-defined role in Plane." to apply the
hyphenated modifier.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: f2a9b989-06c0-43b2-b181-2e0ed1c320c2

📥 Commits

Reviewing files that changed from the base of the PR and between 800bb0a and c94ad01.

📒 Files selected for processing (6)
  • docs/.vitepress/config.ts
  • docs/roles-and-permissions/custom-roles.md
  • docs/roles-and-permissions/member-roles.md
  • docs/roles-and-permissions/overview.md
  • docs/roles-and-permissions/permission-schemes.md
  • docs/roles-and-permissions/permissions-matrix.md
✅ Files skipped from review due to trivial changes (2)
  • docs/roles-and-permissions/custom-roles.md
  • docs/roles-and-permissions/permission-schemes.md
🚧 Files skipped from review as they are similar to previous changes (1)
  • docs/.vitepress/config.ts

Comment on lines +542 to +561
| Role | Permission | Condition |
| ------------------- | ------------------------------------------------ | --------- |
| Project Contributor | Delete work items, epics, modules, cycles | Creator |
| Project Contributor | Edit and delete comments and attachments | Creator |
| Project Contributor | Edit, delete, share, and publish views | Creator |
| Project Contributor | Edit and delete intake items | Creator |
| Project Contributor | Edit and delete project, epic, and cycle updates | Creator |
| Project Contributor | Edit and delete project assets | Creator |
| Project Commenter | Edit and delete intake work items | Creator |
| Project Commenter | Edit and delete comments | Creator |
| Project Guest | View, edit, and delete intake items | Creator |
| Workspace Member | Edit and delete workspace views | Creator |
| Workspace Member | Edit and delete wiki collections | Creator |
| Workspace Member | Edit and delete initiative comments | Creator |
| Workspace Member | Delete initiative attachments | Creator |
| Workspace Member | Delete workspace drafts | Creator |
| Teamspace Member | Edit, delete, and manage teamspace | Lead |
| Teamspace Member | Edit and delete teamspace comments | Creator |
| Teamspace Member | Edit and delete teamspace views | Creator |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Search for these terms in the detailed tables to confirm they're missing
rg -n "project assets|wiki collections|workspace drafts" docs/roles-and-permissions/permissions-matrix.md

Repository: makeplane/docs

Length of output: 330


🏁 Script executed:

# First, see the structure around lines 542-561 to understand what "above" means
head -n 600 docs/roles-and-permissions/permissions-matrix.md | tail -n 150

Repository: makeplane/docs

Length of output: 7472


🏁 Script executed:

# Search for these terms in all detailed tables (before the summary section at 542)
rg -n "project assets|wiki collections|workspace drafts" docs/roles-and-permissions/permissions-matrix.md | head -n 20

Repository: makeplane/docs

Length of output: 330


🏁 Script executed:

# Check the Commenter role definition in member-roles.md at line 74
sed -n '70,80p' docs/roles-and-permissions/member-roles.md

Repository: makeplane/docs

Length of output: 713


🏁 Script executed:

# Find all section headers (###) to identify all tables in the file
rg -n "^###" docs/roles-and-permissions/permissions-matrix.md

Repository: makeplane/docs

Length of output: 1030


🏁 Script executed:

# Search for "Intake" tables to understand if intake items are separate from work items
rg -B2 -A10 "intake" docs/roles-and-permissions/permissions-matrix.md | head -n 100

Repository: makeplane/docs

Length of output: 3025


🏁 Script executed:

# Search for any mention of "assets" in the file to see if project assets are documented
rg -n "assets" docs/roles-and-permissions/permissions-matrix.md

Repository: makeplane/docs

Length of output: 148


🏁 Script executed:

# Search the entire file for table definitions mentioning these terms
rg -B5 -A5 "project assets|wiki collections|workspace drafts" docs/roles-and-permissions/permissions-matrix.md

Repository: makeplane/docs

Length of output: 1549


🏁 Script executed:

# Check if there are tables for "Assets", "Wiki", or "Drafts" by looking for headers
rg -A20 "^### (Assets|Wiki|Drafts)" docs/roles-and-permissions/permissions-matrix.md

Repository: makeplane/docs

Length of output: 889


🏁 Script executed:

# Double-check the Intake table to confirm Commenter's edit permissions
sed -n '338,356p' docs/roles-and-permissions/permissions-matrix.md

Repository: makeplane/docs

Length of output: 1397


Remove or define undefined permissions in the conditional grants summary.

The summary table introduces three permissions not defined in any detailed table:

  • "project assets" (line 549)
  • "wiki collections" (line 554)—the Wiki section defines "Wiki Pages", not "collections"
  • "workspace drafts" (line 557)

Either add detailed tables for these features or remove them from the summary. The Commenter intake permissions are valid but clarify that "Intake Items" (the table term) and "intake work items" (the summary term) refer to the same feature.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/roles-and-permissions/permissions-matrix.md` around lines 542 - 561, The
summary table contains undefined permission names ("project assets", "wiki
collections", "workspace drafts") and inconsistent phrasing for Intake ("intake
work items" vs "Intake Items"); either add corresponding detailed permission
sections (with the same canonical names) for Project Assets, Wiki Collections,
and Workspace Drafts, or remove those three rows from the summary; also
standardize the Intake terminology by changing "intake work items" to "Intake
Items" (or vice versa) so the summary matches the detailed table exactly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants