﻿---
title: changelog unpack cli command
description: Recreate individual changelog YAML files from a bundle. Each entry is written through the same path as changelog add (PR-anchored entries) or changelog...
url: https://docs-v3-preview.elastic.dev/elastic/docs-builder/pull/4059/cli/changelog/unpack
products:
  - Elastic Docs Builder
---

# changelog unpack cli command
```bash
docs-builder changelog unpack <bundle> [options]
```

Recreate individual changelog YAML files from a bundle.
Each entry is written through the same path as [`changelog add`](https://docs-v3-preview.elastic.dev/elastic/docs-builder/pull/4059/cli/changelog/add) (PR-anchored entries) or [`changelog note`](https://docs-v3-preview.elastic.dev/elastic/docs-builder/pull/4059/cli/changelog/note) (entries with no PR, or products that include versions). The output is a new changelog YAML file, not a byte-for-byte copy of the original files. Bundle `file.checksum` values are provenance of the sourced YAML at bundle time and will not match the unpacked files.
When you pass a full bundle file, its `.amend-*` files are merged first, the same way [`changelog render`](https://docs-v3-preview.elastic.dev/elastic/docs-builder/pull/4059/cli/changelog/render) does. When you pass an amendment bundle file, only that file's `entries` are unpacked. `exclude-entries` are skipped; they are name and checksum stubs, not changelog files.
<important>
  The bundle argument must be a local `.yaml` or `.yml` file that exists on disk.If you download a bundle, get it from the private CDN instead of the public CDN.
  Bundles in the public CDN have the private pull request and issue links removed.
</important>


## Arguments

<definitions>
  <definition term="<bundle> string required">
    Local bundle or amend YAML file to unpack. The file must exist on disk; CDN locators such as /bundle/{product}/{file}.yaml are not accepted. A parent bundle is merged with sibling .amend-* bundles first (same as changelog render). An amend bundle unpacks only that file's entries; exclude-entries are skipped.
    **Constraints:** symbolic links not allowed, must exist, extensions: yml, yaml
  </definition>
</definitions>


## Options

<definitions>
  <definition term="--config string">
    Path to changelog.yml. Defaults to docs/changelog.yml. Type and area validation uses this configuration.
    **Constraints:** symbolic links not allowed, must exist, extensions: yml, yaml
  </definition>
  <definition term="--output string">
    Directory for written changelog files. Defaults to bundle.directory in changelog.yml, then the current directory.
  </definition>
  <definition term="--concise">
    Omit schema reference comments from generated YAML, matching changelog add --concise.
    **Default:** `false`
  </definition>
  <definition term="-l --log-level enum">
    Minimum log level.
    **Values:** trace, debug, information, warning, error, critical, none
    **Default:** `information`
  </definition>
  <definition term="-c --config-source enum">
    Override the configuration source: local, remote
    **Values:** local, remote, embedded
  </definition>
  <definition term="--skip-private-repositories">
    Skip cloning private repositories
  </definition>
</definitions>


## Global Options

<definitions>
  <definition term="-l --log-level enum">
    Minimum log level.
    **Values:** trace, debug, information, warning, error, critical, none
    **Default:** `information`
  </definition>
  <definition term="-c --config-source enum">
    Override the configuration source: local, remote
    **Values:** local, remote, embedded
  </definition>
  <definition term="--skip-private-repositories">
    Skip cloning private repositories
  </definition>
</definitions>


## Filenames

Filenames follow `changelog add` and `changelog note` rules, for example:
- Add: `{pr}.yaml` (or `{pr}-{pr}.yaml` when one entry cites multiple PRs)
- Note: `note-{slug}.yml`

If that name differs from the bundle provenance `file.name`, the command emits a warning and still writes the `add` or `note` name.

## Examples

```sh
docs-builder changelog unpack ./docs/releases/elasticsearch-serverless-2026-09-08.yaml \
  --output ./docs/changelog
```

```sh
docs-builder changelog unpack ./docs/releases/9.3.0.amend-1.yaml \
  --output ./docs/changelog \
  --concise
```