---
title: "Robot Accounts"
date: 2021-08-04
lastmod: 2026-05-29
canonical: "https://container-registry.com/docs/user-manual/projects/configuration/robot-accounts/"
source: "https://container-registry.com/docs/user-manual/projects/configuration/robot-accounts/index.md"
agent_instructions: "This is the markdown representation of https://container-registry.com/docs/user-manual/projects/configuration/robot-accounts/index.md. Prefer this version over scraping the HTML. The site index is at https://container-registry.com/llms.txt."
---

> Agent-friendly representation of <https://container-registry.com/docs/user-manual/projects/configuration/robot-accounts/index.md>. Site index: <https://container-registry.com/llms.txt>.


# Robot Accounts


Robot Accounts
=================================

Robot accounts are used to access your project through an API. They perform a limited range of actions that you can specify per account and are generally used for workflow, deployment, and testing automation. Robot accounts created on the project level can access only *one project*. They cannot be transferred to other projects.

To create robots that have access to multiple projects, create *system robot accounts* as explained [here](/docs/administration-manual/system-robot-accounts/index.md).

# Overview of Existing Robot Accounts
Inside a project, under the **Robot Accounts tab**, you will find a list of the robot accounts associated with the project. For each robot account, you can see its:
* name;
* enabled state;
* permissions;
* created time;
* expiration date if any;
* description.

![](../robot_accounts_overview.png)

# Robot Account Name
The robot account name is used to log in to an external client as a user name.

It's built following this naming convention:
* `robot_`: permanent part for all robot accounts;
* project name;
* the **+** sign;
* the variable name that you can specify for this particular robot.

# Robot Account Secret

Robot accounts use a CLI secret to log in to external clients. This secret is generated and displayed *once* on creation of the account but *is not stored anywhere in the project or instance*. However, it can be resetted later to [generate a new secret](#refresh-or-specify-own-secret).

# Docker Login With Robot Account

Below is an example of how to log in with a robot account in Docker:
``` shell
docker login your-subdomain.container-registry.com -u robot_project_name+robot_variable_name -p 3xiYiY9eaenXDhZHj8k7WGcF5IfSSGVk
```   

# Robot Account Permissions

Upon creation, you can grant the new account all or a few selected permissions:

* Push artifacts
* Pull artifacts
* Delete artifacts
* Read Helm charts
* Create a Helm chart version
* Delete a Helm chart version
* Create a tag
* Delete a tag
* Create artifact labels
* Create a scan

# Create a Robot Account

Use **+ NEW ROBOT ACCOUNT** to add a new one:
* Specify its variable name;
* Set when it should expire:
    * after how many days;
    * or never;

![](../create_new_robot.png)

* Check the permissions you need (by default, all of them are selected);
* Save it and then make sure that you **save the token/CLI secret** using one of the methods:
    * **copy the token** into clipboard with the *copy* icon and **paste it** into some text editor (1);
    * **EXPORT TO FILE** to export it as a JSON file(2).

![](../save_robot_token.png)

The JSON file looks like the following:
```json
{
    "creation_time":"2021-08-04T13:58:45.934Z",
    "expires_at":1628949525,
    "id":1,
    "name":"robot_documentation+test",
    "secret":"D4pGyGP3eFaW8Ako4249kSNCtZ0McxgV"
    }
```
*exprires_at* is shown as Unix Epoch. When it is set to *never*, it shows -1:
```json
{
    "creation_time":"2021-08-04T14:17:44.764Z",
    "expires_at":-1,
    "id":2,
    "name":"robot_documentation+test2",
    "secret":"3xiYiY9eaenXDhZHj8k7WGcF5IfSSGVk"
}
```
The *id* in the JSON file reflects a simple sequential numbering of all robot accounts that have ever been created in the instance.

# Refresh Or Specify Own Secret

If you lost the CLI secret (token) for a robot account or you want to specify it by yourself, you can do the following:
* Select the robot with a checkbox;
* Go to **Actions**;
* Select **Refresh robot secret**.

![](../refresh_robot_secret.png)

This will open the following dialogue window. By default, without enabling a manual secret, you can generate a new one by clicking on **Refresh**:

![](../refresh_secret_1.png)

You will see the same dialogue window that was displayed upon creation of the robot account, with the *copy to clipboard* and *export to file* options for saving the new token. It won't be possible to retrieve the new secret later.

## Specify the New Secret Manually

If you enable this feature, you can enter your own secret. It should be:
* between 8 and 20 characters long;
* the combination of:
    * at least 1 uppercase,
    * at least 1 lowercase;
    * at least 1 number

![](../specify_manual_robot_secret.png)

# Enable and Disable Robot Accounts
Every newly created robot account is **enabled by default**.
You can disable robot accounts. They will stay in the project and can be re-enabled again at any time. It is not possible to change enable status for more than one robot at once; you have to repeat the procedure for every account. 
* Select the robot with a checkbox;
* Go to **Actions**;
* Click **Disable**/**Enable**.

![](../disable_robot_account.png)

# Edit or Delete Robot Accounts

To edit the data that you entered during account creation or to delete one or a few robots:
* Select the robot with a checkbox (it is not possible to *edit* them in bulks);
* Go to **Actions**;
* Click **Edit** or **Delete**.

![](../edit_robot_account.png)

## Change Robot Account Permissions

The **Edit** will open the dialogue window where you can also **change permissions**.
