> For the complete documentation index, see [llms.txt](https://help.verkada.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.verkada.com/new-alarms/configuration/keycode-management.md).

# Keycode Management

Learn about keycode management in Verkada Alarms

{% hint style="success" %}
This article is a guide for New Alarms. Refer to this [article](/classic-alarms/configuration/configure-classic-alarms-site-settings/classic-alarms-sites.md) if you have classic Alarms. See [New Alarms vs Classic Alarms](/new-alarms/getting-started/new-alarms-vs-classic-alarms.md) if you are unsure which version of Alarms you have.
{% endhint %}

***

With keycode management, each user has one keycode associated with their Command profile. Users can use their keycode at any alarm site where they have arm/disarm access. This provides three key benefits:

* **One keycode across sites:** Users can use the same keycode at every alarm site where they have arm/disarm access. You do not need to configure a separate keycode for each site.
* **Manage access through users and groups:** Grant arm/disarm access directly to a Command user or group. Access can apply to specific partitions, an entire site, or multiple sites.
* **Clear visibility with the Alarm User role:** The **Alarm User** role makes it easy to see who has arm/disarm access to each site or partition.

### Permissions

Org Admins and Site Admins automatically inherit Alarm User (Site) role permissions:

* Org Admins can arm/disarm all partitions across all sites in the organization via Command and keypad.
* Site Admins can arm/disarm all partitions site-wide via Command and keypad, but only for the sites where they are a Site Admin.

{% hint style="danger" %}
This does not apply to temporary Organization Admins or Site Admins.
{% endhint %}

***

## Migrate to unified keycode management

Select the **Migrate to a new keycode experience** banner in Command to review your organization’s migration status. If you take no action, Verkada will automatically migrate your organization after October 20, 2026.&#x20;

<div align="left" data-with-frame="true"><figure><img src="https://2259276529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FNU1He6Uj2tgInV2VdCLQ%2Fuploads%2FHpMETykcQweCS200H1wF%2FMigrate%20to%20a%20new%20keycode%20experience.png?alt=media&amp;token=3f5c781c-81f9-4ecf-b676-2cd12e1ec2b3" alt="" width="375"><figcaption></figcaption></figure></div>

Before your organization can migrate to unified keycode management, Command checks for previous keycode conflicts:

#### No conflicts found

Your organization can migrate immediately. Select **Migrate** to start using unified keycode management.&#x20;

<div align="left" data-with-frame="true"><figure><img src="https://2259276529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FNU1He6Uj2tgInV2VdCLQ%2Fuploads%2FpIyfo62pWYWMGMvbSnIo%2Fimage.png?alt=media&amp;token=4b4c1e87-205c-4cbc-a3df-a1e46ab70e36" alt="" width="375"><figcaption></figcaption></figure></div>

#### Conflicts found&#x20;

Command displays the conflicts that must be resolved. Only Org Admins can download the conflict report and resolve these conflicts.

<div align="left" data-with-frame="true"><figure><img src="https://2259276529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FNU1He6Uj2tgInV2VdCLQ%2Fuploads%2FDVnK5b3KwaGqoDz3Hs0P%2FScreenshot%202026-09-03%20at%202.03.49%E2%80%AFPM.png?alt=media&amp;token=b1cd466e-f2bc-47b7-b912-e089451f4f74" alt="" width="375"><figcaption></figcaption></figure></div>

There are **three** types of conflicts:

{% hint style="warning" %}
All conflicts must be resolved before your organization can migrate.
{% endhint %}

1. **The same user has different keycodes at different sites**&#x20;

   Choose one keycode for the user and update their keycode at each alarm site so it is the same across all sites.
2. **Two or more users have the same keycode**

   Assign each user a unique keycode so that no two users share the same keycode.
3. **A user’s keycode matches a general keycode**

   Update either the user’s keycode or the general keycode at the affected site so they no longer match.

Contact [Verkada Support](/command/need-help/contact-verkada-support.md) if you need help resolving conflicts.

***

## Grant Alarm User role permissions

There are three ways to give a user arm/disarm access to a site. See [Roles and permissions](https://help.verkada.com/command/users-and-permissions/roles-and-permissions-for-command#set-permissions) for more information.

{% hint style="danger" %}
Granting a user the Alarm User role does not automatically generate a keycode for that user. You must generate their keycode separately under the **Keycode** tab.
{% endhint %}

{% tabs %}
{% tab title="Alarms site User Keycodes page" %}
{% stepper %}
{% step %}
**In Verkada Command, go to All Products > New Alarms.**
{% endstep %}

{% step %}
**Select your alarm site.**
{% endstep %}

{% step %}
**In the left navigation, select Keycodes.**
{% endstep %}

{% step %}
**At the top right, click** <i class="fa-plus">:plus:</i> **Add.**

1. Search for and select a user, then click **Add.**
2. Once the user is added, select whether to grant site-wide permissions or permissions only to a subset of partitions.&#x20;
3. Select **Save.**
   {% endstep %}
   {% endstepper %}
   {% endtab %}

{% tab title="Users page" %}
{% stepper %}
{% step %}
**In Verkada Command, go to All Products > Admin.**
{% endstep %}

{% step %}
**Select Users & Permissions > Users.**
{% endstep %}

{% step %}
**Select a user to grant permissions.**
{% endstep %}

{% step %}
**Click Manage to the right of Site Roles.**&#x20;

1. Select **Alarm.**
2. Select the **Alarm User (Site)** role for site-wide access or the **Alarm User (Partitions)** role for access to specific partitions within the site.
3. Click **Save.**
   {% endstep %}
   {% endstepper %}
   {% endtab %}

{% tab title="Groups page" %}
{% stepper %}
{% step %}
**In Verkada Command, go to All Products > Admin.**
{% endstep %}

{% step %}
**Select Users & Permissions > Groups.**
{% endstep %}

{% step %}
**Select a Command group that has Alarm User role permissions granted. If you need to grant the group permissions:**

1. At the top, click **Roles.**
2. Click **Manage** to the right of **Site Roles.**
   1. Select **Alarm**.
   2. Select the **Alarm User (Site)** role for site-wide access or the **Alarm User (Partitions)** role for access to specific partitions within the site.
   3. Click **Save**.
      {% endstep %}

{% step %}
**At the top, click Members > Add Member.**

1. Search for and select a user.
2. Click **Done.**
   {% endstep %}
   {% endstepper %}

***

A group’s access can apply to:

* An entire site.
* One or more partitions within a site.
* Multiple sites through an organization-based group.

{% hint style="warning" %}

* By default, the user receives the **Alarm User (Site)** role and can arm and disarm all partitions.
* To limit access to specific partitions, click **Site-Wide** in the **Partitions** column. Clear **All partitions**, then select the partitions the user should be able to arm and disarm. The role automatically changes to **Alarm User (Partition)**.
* A site-wide role allows the user to arm and disarm through both Command and keypads. A partition-scoped role allows the user to arm and disarm only via keypads and does not provide Command access.
  {% endhint %}
  {% endtab %}
  {% endtabs %}

***

## Manage keycodes

{% tabs %}
{% tab title="Edit" %}
{% stepper %}
{% step %}
**In Verkada Command, go to All Products > New Alarms.**
{% endstep %}

{% step %}
**Select your alarm site.**
{% endstep %}

{% step %}
**In the left navigation, select Keycodes.**
{% endstep %}

{% step %}
**Select the user > Keycodes.**
{% endstep %}

{% step %}
**To the right of a user's keycode, select Regenerate to generate a random keycode, or select Edit to enter your own keycode.**
{% endstep %}
{% endstepper %}
{% endtab %}

{% tab title="Remove" %}
{% stepper %}
{% step %}
**In Verkada Command, go to All Products > New Alarms.**
{% endstep %}

{% step %}
**Select your alarm site.**
{% endstep %}

{% step %}
**In the left navigation, select Keycodes.**
{% endstep %}

{% step %}
**Select the user > Keycodes.**
{% endstep %}

{% step %}
**To the right of a user's keycode, click** <i class="fa-trash-can">:trash-can:</i> **Delete.**

{% hint style="danger" %}
This removes the **Alarm User** role for the user on that site.
{% endhint %}
{% endstep %}
{% endstepper %}
{% endtab %}
{% endtabs %}

### General and duress keycodes

General keycodes and duress keycodes remain site-scoped. Add and manage both from the **General Credentials** and **Duress Keycode** tabs on the alarm site's **Keycodes** page.

{% hint style="warning" %}
See [Configure New Alarm Site Settings](/new-alarms/configuration/alarm-sites/configure-new-alarms-site-settings.md#keycodes) for more information.&#x20;
{% endhint %}

***


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://help.verkada.com/new-alarms/configuration/keycode-management.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
