# .Net Commander CLI

## Overview

The .Net Commander CLI is a command-line application built on the Keeper .NET SDK. It provides interactive and scriptable access to your Keeper vault, enabling basic record management, folder operations, sharing, enterprise administration, and more.

### Building and Running Commander

**Clone the Repository**

```bash
git clone https://github.com/Keeper-Security/keeper-sdk-dotnet.git
cd keeper-sdk-dotnet
```

**Build the Commander CLI**

```bash
# Build Commander project only
dotnet build Commander/Commander.csproj

# Or build entire solution
dotnet build KeeperSdk.sln
```

**Build Output Locations**

* **.NET 8.0**: `Commander/bin/Debug/net8.0/`
* **.NET Framework 4.7.2** (Windows): `Commander/bin/Debug/net472/`

#### Running

**Run from Project**

```bash
# when using linux or macos
dotnet run Commander --framework=net8.0

# when using windows
dotnet run Commander --framework=net472
```

### Quick Start Guide

#### First Time Setup

1. **Launch Commander** - You'll see the interactive prompt:

   ```
   Not Logged In>
   ```
2. **Login to Keeper**:

   ```bash
   My Vault> login
   ```

   Enter your credentials when prompted:

   * Email address
   * Master password
   * Two-factor authentication code (if enabled)
   * Approve device if required
3. **Sync Your Vault**:

   ```bash
   My Vault> sync-down
   # or use the alias
   My Vault> d
   ```
4. **List Your Records**:

   ```bash
   My Vault> list
   # or
   My Vault> ls -l
   ```
5. **Get Record Details**:

   ```bash
   My Vault> get <record-uid-or-title>
   ```

### Command Reference

These are all the commands supported by commander cli. [(Link)](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference).

{% hint style="info" %}
All commands below support `--help` as argument. This can be used to know about the command usage.
{% endhint %}

#### Authentication Commands

| Command                                                                                                                                          | Alias | Description                      |
| ------------------------------------------------------------------------------------------------------------------------------------------------ | ----- | -------------------------------- |
| [`login`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/login-commands#dotnet-cli)               |       | Login to your Keeper account     |
| [`sync-down`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/miscellaneous-commands#dotnet-cli-2) | `d`   | Download & decrypt vault data    |
| [`logout`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/login-commands#dotnet-cli-1)            |       | Logout and clear session         |
| [`whoami`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/login-commands#dotnet-cli-2)            |       | Display current user information |

#### Biometric Commands

| Command                                                                                                                                                                  | Alias | Description                                             |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----- | ------------------------------------------------------- |
| [`biometric register`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/login-commands/biometric-login-commands#dotnet-cli) |       | Register a new windows hello key                        |
| [`biometric verify`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/login-commands/biometric-login-commands#dotnet-cli-1) |       | Verify login using biometrics                           |
| [`biometric list`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/login-commands/biometric-login-commands#untitled)       |       | List all biometrics linked to keeper account            |
| [`biometric remove`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/login-commands/biometric-login-commands#dotnet-cli-2) |       | Remove credential linked to account on current platform |

#### Vault Navigation & Search

| Command                                                                                                                                     | Alias                                                                                                                                | Description                            |
| ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------- |
| [`search`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/miscellaneous-commands#dotnet-cli) | [`list`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/record-commands#dotnet-cli-3) | Search vault (supports regex patterns) |
| [`ls`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/folder-commands#dotnet-cli)            |                                                                                                                                      | List current folder contents           |
| [`cd`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/folder-commands#dotnet-cli-5)          |                                                                                                                                      | Change current folder                  |
| [`tree`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/folder-commands#dotnet-cli-3)        |                                                                                                                                      | Display folder structure as tree       |

#### Record Management

| Command                                                                                                                                                          | Alias  | Description                                                  |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------ | ------------------------------------------------------------ |
| [`get`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/record-commands#dotnet-cli-4)                              |        | Get detailed information about records, folders, teams, etc. |
| [`add-record`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/record-commands#dotnet-cli)                         | `add`  | Create a new record                                          |
| [`update-record`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/record-commands#dotnet-cli-1)                    | `edit` | Update existing record                                       |
| [`rm`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/record-commands#dotnet-cli-2)                               |        | Remove record(s)                                             |
| [`mv`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/folder-commands#dotnet-cli-1)                               |        | Move record or folder to different location                  |
| [`record-history`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/record-commands#dotnet-cli-5)                   |        | Display record version history                               |
| [`record-type-info`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/record-type-commands#dotnet-cli)              | `rti`  | Get record type information                                  |
| [`share-record`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/sharing-commands/record-share-command#dotnet-cli) |        | Manage record sharing permissions                            |

#### Attachment Management

| Command                                                                                                                                                                 | Alias | Description                             |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----- | --------------------------------------- |
| [`download-attachment`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/record-commands/attachment-commands#dotnet-cli-1) |       | Download file attachment(s) from record |
| [`upload-attachment`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/record-commands/attachment-commands#dotnet-cli)     |       | Upload file attachment to record        |
| [`delete-attachment`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/record-commands/attachment-commands#dotnet-cli-2)   |       | Delete attachment from record           |

#### Folder Management

| Command                                                                                                                               | Alias | Description              |
| ------------------------------------------------------------------------------------------------------------------------------------- | ----- | ------------------------ |
| [`mkdir`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/folder-commands#dotnet-cli-4) |       | Create new folder        |
| [`rmdir`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/folder-commands#dotnet-cli-2) |       | Remove folder            |
| `update-dir`                                                                                                                          |       | Update folder properties |

#### Shared Folder Commands

| Command                                                                                                                                  | Alias | Description                             |
| ---------------------------------------------------------------------------------------------------------------------------------------- | ----- | --------------------------------------- |
| [`sf-list`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/sharing-commands#dotnet-cli)   |       | List all shared folders                 |
| [`sf-user`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/sharing-commands#dotnet-cli)   |       | Manage shared folder user permissions   |
| [`sf-record`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/sharing-commands#dotnet-cli) |       | Manage shared folder record permissions |

#### Trash Management

| Command                                                                                                                          | Alias | Description                     |
| -------------------------------------------------------------------------------------------------------------------------------- | ----- | ------------------------------- |
| [`trash`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/trash-commands#commands) |       | Manage deleted records in trash |

#### Device Management

| Command                                                                                                                                                                | Alias | Description                    |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----- | ------------------------------ |
| [`devices`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/miscellaneous-commands/device-commands)                      |       | Manage other devices           |
| [`this-device`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/miscellaneous-commands/this-device-commands#this-device) |       | Manage current device settings |

#### Enterprise Commands

| Command                                                                                                                                                                                | Alias  | Description                            |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------ | -------------------------------------- |
| [`enterprise-get-data`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/enterprise-management-commands/enterprise-info-commands#usage-2) | `eget` | Retrieve enterprise data               |
| [`enterprise-node`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/enterprise-management-commands/enterprise-node-commands#usage-3)     | `en`   | Manage enterprise organizational nodes |
| [`enterprise-user`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/enterprise-management-commands/enterprise-user-commands#commands-4)  | `eu`   | Manage enterprise users                |
| [`enterprise-team`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/enterprise-management-commands/enterprise-team-commands#commands-3)  | `et`   | Manage enterprise teams                |
| [`enterprise-role`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/enterprise-management-commands/enterprise-role-commands#commands-2)  | `er`   | Manage enterprise roles                |
| [`enterprise-device`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/enterprise-management-commands/device-approve-commands#dotnet-cli) | `ed`   | Manage user devices                    |
| [`transfer-user`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/enterprise-management-commands/transfer-user-commands#dotnet-cli)      |        | Transfer user account ownership        |
| [`audit-report`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/enterprise-management-commands/audit-alert-commands#dotnet-cli)         |        | Run audit trail reports                |

#### Record Type Management

| Command                                                                                                                                                      | Alias | Description                           |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----- | ------------------------------------- |
| [`record-type-add`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/record-type-commands#dotnet-cli-1)         |       | Add a new custom record type          |
| [`record-type-update`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/record-type-commands#dotnet-cli-2)      |       | Update existing record type           |
| [`record-type-delete`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/record-type-commands#dotnet-cli-3)      |       | Delete custom record type             |
| [`load-record-types`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/import-export-commands#dotnet-cli-5)     |       | Bulk load record types from JSON file |
| [`download-record-types`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/import-export-commands#dotnet-cli-4) |       | Export record types to JSON file      |

#### Security & Reporting

| Command                                                                                                                                      | Alias | Description                                     |
| -------------------------------------------------------------------------------------------------------------------------------------------- | ----- | ----------------------------------------------- |
| `password-report`                                                                                                                            |       | Generate comprehensive password security report |
| [`breachwatch`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/breachwatch-commands#overview) |       | BreachWatch security monitoring commands        |

#### Other Commands

| Command                                                                                                                                         | Alias | Description                     |
| ----------------------------------------------------------------------------------------------------------------------------------------------- | ----- | ------------------------------- |
| [`ksm`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/secrets-manager-commands#overview)        |       | Keeper Secrets Manager commands |
| [`one-time-share`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/sharing-commands#dotnet-cli-1) |       | Manage one-time secure shares   |
| [`import`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/import-export-commands#dotnet-cli)     |       | Import records from JSON file   |
| [`clear`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/miscellaneous-commands#dotnet-cli-4)    | `c`   | Clear the screen                |
| `help`                                                                                                                                          | `?`   | Display help information        |
| [`quit`](https://docs.keeper.io/en/keeperpam/commander-sdk/keeper-commander-sdks/sdk-command-reference/miscellaneous-commands#dotnet-cli-5)     | `q`   | Exit Commander                  |

#### Biometric Login Examples

#### Logging in with Biometric

```
Connected to "keepersecurity.com".

Username: user_email
Biometric authentication successful.
Authentication completed successfully.

Syncing...
Decrypted 62 record(s)
```

#### Register Biometric Credentials

This command creates a new passkey with currently logged in user's email. this passkey will be used for authenticating user when they want to login once we register biometric login on a device.

To use this command, you have to be logged in on CLI.

**Note:**

1. After executing this command, user has to register the device with Keeper to use biometric as default login method.
2. Persistent login takes precedence over biometric login, so if the device has persistent login enabled, biometric credentials are not required during login.

```shell
My Vault> biometric register
Registering Windows Hello biometric credential...
Windows Hello credential registered successfully
Provider: Windows Hello

You can now use Windows Hello to log in to Keeper.
```

#### Authenticate Biometric Credential

This command will be used to authenticate your session with credential stored. This same functionality will be used when we are trying to login using biometrics.

```sh
My Vault> biometric verify
Verifying Windows Hello authentication for '<user_email>' (purpose: vault)...
Windows Hello verification successful.

My Vault> biometric verify --purpose=login
Verifying Windows Hello authentication for '<user_email>' (purpose: login)...
Windows Hello verification successful.
```

#### List Biometric Credential

This command shows all the credentials which have been registered to the given account, along with the authenticator type, credential ID, date created and last used date

To use this command, you have to be logged in on CLI

```sh
My Vault> biometric list
Listing Windows Hello biometric credentials...


    #  Friendly Name  Provider                Created           Last Used         Status
  ---  -------------  ----------------------  ----------------  ----------------  ------
    1  Windows Hello  Windows Hello           2025-10-10 19:41  2025-10-10 19:42  Active
    2  Windows Hello  Windows Hello           2025-10-29 12:59  2025-10-29 14:14  Active

```

#### Remove Biometric Credential

This command will be used to deactivate biometric credential from Keeper, meaning the Keeper platform will stop accepting the given cryptographic credential for logging in the user.

```sh
My Vault> biometric remove
Are you sure you want to remove Windows Hello biometric credential for '<user_email>'? (y/N): y
Biometric credential removed for user: '<user_email>'
```


---

# Agent Instructions: 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:

```
GET https://docs.keeper.io/en/keeperpam/commander-cli/commander-installation-setup/net-developer-sdk/.net-commander-cli.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
