> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended**:
> ```bash
> npx @scalekit-inc/cli setup
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for 40+ agents.
> Features: full-stack-auth, agent-auth, mcp-auth, modular-sso, modular-scim.
> [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Configure roles per environment

Override a member’s dashboard role on Development or Production so they cannot change the wrong environment.
A workspace role is the default for every environment. An environment override replaces that default on one Development or Production environment.

Use an override when someone should edit Development but not Production. Create the role first in [Define custom dashboard roles](/how-to/define-custom-dashboard-roles/). Environment list and types are in [Manage environments](/how-to/environments/).

## Before you start

- You can open **Team Members** and **Edit role**
- You hold `environment_access:write` to set or reset overrides
- The member already has a workspace role
- You know which environment they should use: **Development** or **Production**

1. ## Open Edit role

   In the header, click the **workspace name** and choose **Team Members**.

   Open the member's row menu and choose **Edit role**.

2. ## Confirm the workspace default

   **Workspace role** is the default dashboard role. It applies across every environment unless you override it below.

   Leave this set to the role they should have on most environments.

3. ## Override one environment

   In **Environment access**, each row shows **Environment**, **Effective role**, and **Source**.

   | Source | Meaning |
   | ------ | ------- |
   | Workspace Default | Uses the workspace role above |
   | Overridden | This environment uses a different dashboard role |

   Choose **Set override** on the environment. Select the dashboard role for that environment, or **No access** to hide it.

   Repeat for each environment that should differ from the default.

   > caution: Production is a separate grant
>
> Development access does not include Production. Grant a Production override only to people who ship live auth changes.

4. ## Save

   Click **Save**.

   Tell the teammate which environment to open. They switch with the environment name in the header (right of the workspace name).

## Reset an override

In **Environment access**, choose **Reset to Default** on that environment.

The row source returns to **Workspace Default**. The member uses the workspace role again on that environment.

## Verify

1. Sign in as the member
2. Switch to the granted environment and confirm settings load
3. Switch to an environment set to **No access** and confirm it is blocked or hidden
4. Re-open **Edit role** and confirm **Source** is **Overridden** on the environments you changed

## Common questions

## Do application roles follow the same per-environment switch?

No. This page is about Scalekit dashboard access. Application roles for your product's users are not scoped here.

## Why is Staging not in the list?

Scalekit environment types are **Development** and **Production**. Create extra environments of either type from **Workspace > Environments** if you need a separate test stack.


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
