---
title: "[Contentstack Command-line Interface (CLI)] - Cloning a Stack | Beta Commands"
description: Cloning a Stack | V2.x.x Beta
url: https://www.contentstack.com/docs/developers/cli/cloning-a-stack/beta
product: Contentstack
doc_type: cli-guide
audience:
  - developers
version: V2.x.x Beta
last_updated: 2026-03-25
---

# [Contentstack Command-line Interface (CLI)] - Cloning a Stack | Beta Commands

This page explains how to clone a Contentstack stack (structure and optionally content) using the `cm:stacks:clone` command in the Contentstack CLI. It is intended for developers and admins who need to quickly set up, test, or migrate stacks by exporting from a source stack and importing into a destination stack.

## Cloning a Stack | V2.x.x Beta

Contentstack enables you to **clone a stack** and its associated **structure and content** using the `cm:stacks:clone` CLI command. This process lets you [export](/docs/developers/cli/export-content-using-the-cli/) data from a source stack and [import](/docs/developers/cli/import-content-using-the-cli/) it into a new or existing stack, facilitating rapid setup, testing, or migration. This guide uses the latest **Contentstack CLI** commands to ensure a seamless cloning experience.

**Note:** Before executing this command, ensure you have the required permissions for creating or accessing the destination stack. To know more about user roles and their permissions, refer to [this](/docs/developers/invite-users-and-assign-roles/types-of-roles#stack-roles-and-permissions-overview) documentation.

## Prerequisites

- [Contentstack account](https://www.contentstack.com/login/)
- Contentstack CLI [installed](/docs/developers/cli/install-the-cli) and [configured](/docs/developers/cli/configure-regions-in-the-cli/)
- [Configured authtoken](/docs/developers/cli/cli-authentication#authentication)

## Commands

The `cm:stacks:clone` command lets you export content from the source stack and import it into the destination stack instantly.

**Note: **By default, an [audit fix](/docs/developers/cli/audit-plugin#issue-resolution-in-references) is performed on the exported content before import. This helps identify and address potential issues in the exported data.

## Options

Use the following options while performing the clone operation:

| Flag | Short Flag | Description |
|---|---|---|
| `--source-branch` |  | Branch of the source stack. |
| `--source-branch-alias` |  | Alias of the branch of the source stack. |
| `--target-branch` |  | Branch of the target stack. |
| `--target-branch-alias` |  | Alias of the branch of the target stack. |
| `--source-management-token-alias` |  | Source management token alias. |
| `--destination-management-token-alias` |  | Destination management token alias. |
| `--stack-name` | `-n` | Provide a name for the new stack to store the cloned content. |
| `--type` |  | Type of data to clone.<br><br>Supported values:<br>`a`,<br>`b`<br><br>`a`: Structure (all modules except entries and assets).<br><br>`b`: Structure with content (all modules including entries and assets). |
| `--source-stack-api-key` |  | Source stack API key. |
| `--destination-stack-api-key` |  | Destination stack API key. |
| `--import-webhook-status` |  | [Optional] The status of the import webhook.<br><br>Supported values:<br>`disable`,<br>`current`<br><br>Default: `disable` |
| `--yes` | `-y` | Force override all Marketplace prompts. |
| `--skip-audit` |  | [Optional] Skips the audit fix that occurs during an import operation. |
| `--config` | `-c` | Path for the external configuration. |

Below is an example of a config file

```json
{
    "master_locale": {
        "name": "English - United States",
        "code": "en-us"
      },
    "export": {
              // export specific configs
             "fetchConcurrency": 1
      } ,
    "import": {
              // import specific configs
             "entriesPublish": false
      }
}
```

On passing the `--config` flag, the config will be passed to export and import in the `--clone` command. You can pass separate or common config for export and import as given in the above sample config file.

**Note:** If the `--yes` flag is not passed, you’ll be prompted to enter an encryption key when cloning a Marketplace app with its configuration. You have **three attempts** to provide the correct key. After three failed attempts, the cloning process must be restarted from the beginning.

## Steps to Clone a Stack

Follow the steps below to clone a stack using the `cm:stacks:clone` command:

- Run the following command in your terminal:

```
csdx cm:stacks:clone
```

- Choose the **organization** from the displayed list.
- Select the **stack** you want to clone.
- Choose the **branch** of the stack.
- Choose whether to clone content to a **new stack** or use an existing one:
  - **Y:** Create a new stack.
    - Select the destination organization.
- The default name format: `Copy of {source_stack_name}`.
- You can provide a custom name for the new stack.
- **n:** Use an existing stack.
          Select the destination organization and stack (must have permissions).

**Tip:** To minimize errors, we recommend creating **a new destination stack**. If importing content into an existing stack, ensure that it is empty.
- Select one of the following types of content to clone:
      **Structure:** Imports only the schema (no entries/assets).
- **Structure with content:** Imports schema, entries, and assets.

After you complete these prompts, the source stack’s content will be cloned to the destination stack.

Alternatively, you can also run the entire operation using a single command with parameters as given below:

```
csdx cm:stacks:clone -n "<>" --source-management-token-alias "<>" --destination-management-token-alias "<>" --target-branch "<>" --source-branch "<>" --type a|b {choose either a or b} -y
```

**Examples:**

- To clone content using management token aliases:

```
csdx cm:stacks:clone --source-management-token-alias > --destination-management-token-alias >
```

- To clone content and force override all Marketplace prompts:

```
csdx cm:stacks:clone --source-management-token-alias > --destination-management-token-alias > --yes
```

## Points to Remember

- To import content into an **existing stack**, ensure you have permissions to create or update content in that stack.
- Currently, we migrate only the latest version of entries and assets.
- To **create a new stack**, you must have the [owner](/docs/owners-and-admins/organization-roles/#organization-owner) or [admin](/docs/owners-and-admins/organization-roles/#organization-admin) rights in the destination organization.
- During **workflow migration**, admins and workflow stage users are not included. These must be manually reconfigured after cloning.
- The clone function supports the **same modules** as the CLI [export](/docs/developers/cli/export-content-using-the-cli/) and [import](/docs/developers/cli/import-content-using-the-cli/) commands.

**Additional Resources**: Learn more about the CLI-supported clone operations in the [CLI-Supported Features for Export, Import, and Clone Operations](/docs/developers/cli/cli-supported-features-for-export-import-and-clone-operations) document.

## Common questions

### Do I need special permissions to clone a stack?
Yes. Before executing this command, ensure you have the required permissions for creating or accessing the destination stack.

### What does the `--type` option control?
It controls the type of data to clone: `a`: Structure (all modules except entries and assets). `b`: Structure with content (all modules including entries and assets).

### What happens if I don’t pass the `--yes` flag?
You’ll be prompted to enter an encryption key when cloning a Marketplace app with its configuration, with three attempts before needing to restart the cloning process.

### Can I skip the audit fix during cloning?
Yes. Use `--skip-audit` to skip the audit fix that occurs during an import operation.