> ## Documentation Index
> Fetch the complete documentation index at: https://anaconda.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Channel notices

export const GCell = ({children, className}) => <div className={`grid-table-cell ${className || ""}`} role="cell">
    {children}
  </div>;

export const GTH = ({children, className}) => <div className={`grid-table-th ${className || ""}`} role="columnheader">
    {children}
  </div>;

export const GRow = ({children}) => <div className="grid-table-row" role="row">{children}</div>;

export const GBody = ({children}) => <div className="grid-table-body" role="rowgroup">{children}</div>;

export const GHead = ({children}) => <div className="grid-table-head" role="rowgroup">{children}</div>;

export const GTable = ({children, className, cols}) => <div className={`grid-table not-prose overflow-hidden rounded-2xl ${className || ""}`} style={{
  "--grid-table-cols": cols
}} role="table">
    {children}
  </div>;

export const Comments = ({children}) => {
  return <div class="my-4 px-5 py-4 overflow-hidden rounded-2xl flex gap-3 border border-zinc-500/20 bg-zinc-50/50 dark:border-zinc-500/30 dark:bg-zinc-500/10" data-callout-type="comments">
      <div class="w-4">
        <svg width="14" height="14" viewBox="0 0 640 640" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="w-5 h-5" aria-label="Comments">
            <path d="M320 112C434.9 112 528 205.1 528 320C528 434.9 434.9 528 320 528C205.1 528 112 434.9 112 320C112 205.1 205.1 112 320 112zM320 576C461.4 576 576 461.4 576 320C576 178.6 461.4 64 320 64C178.6 64 64 178.6 64 320C64 461.4 178.6 576 320 576zM280 400C266.7 400 256 410.7 256 424C256 437.3 266.7 448 280 448L360 448C373.3 448 384 437.3 384 424C384 410.7 373.3 400 360 400L352 400L352 312C352 298.7 341.3 288 328 288L280 288C266.7 288 256 298.7 256 312C256 325.3 266.7 336 280 336L304 336L304 400L280 400zM320 256C337.7 256 352 241.7 352 224C352 206.3 337.7 192 320 192C302.3 192 288 206.3 288 224C288 241.7 302.3 256 320 256z" />
        </svg>
      </div>
      <div class="text-sm prose min-w-0 w-full">
        {children}
      </div>
    </div>;
};

Channel notices allow channel administrators to communicate important information to users who install packages from their channel. When users run `conda install` or `conda update` from a channel with active notices, conda displays these messages in the terminal.

Use channel notices to announce:

* Breaking changes in upcoming releases
* Deprecation warnings
* Security advisories
* Migration instructions
* Maintenance windows

For more information on `anaconda channel notice` command options, see [`anaconda channel notice`](/docs/cli-reference/anaconda-client/commands/channel-notice).

## How notices work

When you publish a notice to your channel, conda clients automatically fetch and display it to users during package operations. Each notice has a unique ID, and once a user has seen a notice, it won't be shown again.

Conda fetches notices from `https://conda.anaconda.org/<CHANNEL>/notices.json`. Users must have the channel configured in their `.condarc` file to receive notices.

## Notice lifecycle

Notices follow a three-stage lifecycle:

1. **Draft**: Created but not visible to channel users. Use drafts to prepare notices before publishing.
2. **Published**: Active and visible to channel users until the expiration date.
3. **Archived**/**Deleted**: No longer visible to users. Archive notices to stop showing them before their expiration date or to preserve them for records. Delete records to remove them from the notice list.

<Note>
  Archived notices can be restored by applying the `publish` status to them again. Deleted notices can still be viewed with `anaconda channel list` by specifying `--status deleted`, but cannot be restored.
</Note>

## Prerequisites

* [anaconda-client](/docs/cli-reference/anaconda-client/getting-started) version 1.15.0 or later
* Owner or administrator access to the channel

To verify your anaconda-client version:

```sh theme={null}
anaconda --version
```

To update your anaconda-client version:

```sh theme={null}
conda install --name base anaconda-client=1.15.0
```

## Creating a notice

Create a notice with the `anaconda channel notice create` command.

<Note>
  Notices are created as drafts by default and must belong to a specific channel, even if you are not publishing them yet.
</Note>

```sh theme={null}
anaconda channel notice create <CHANNEL> --message "<MESSAGE>" --level <LEVEL> --expires-after <DAYS>
```

<Comments>
  Replace \<CHANNEL> with your channel name (your username or organization name).<br />
  Replace \<MESSAGE> with your notice text (max 600 characters).<br />
  Replace \<LEVEL> with the severity level for your message.<br />
  Replace \<DAYS> with the number of days until the notice expires.
</Comments>

### Options

<GTable cols="30% 70%">
  <GHead>
    <GRow>
      <GTH>Option</GTH>
      <GTH>Description</GTH>
    </GRow>
  </GHead>

  <GBody>
    <GRow>
      <GCell>`--message <TEXT>`</GCell>
      <GCell>The notice text to display (max 600 characters). Can include a URL.</GCell>
    </GRow>

    <GRow>
      <GCell>`--level <LEVEL>`</GCell>
      <GCell>Notice severity: `info` (default) for general announcements, `warning` for deprecations or breaking changes, `critical` for security issues or urgent actions</GCell>
    </GRow>

    <GRow>
      <GCell>`--expires-at <DATE>`</GCell>
      <GCell>Expiration date in ISO 8601 format (for example, `2026-12-31T00:00:00Z`)</GCell>
    </GRow>

    <GRow>
      <GCell>`--expires-after <DAYS>`</GCell>
      <GCell>Number of days until expiration (minimum 1, alternative to `--expires-at`)</GCell>
    </GRow>

    <GRow>
      <GCell>`-n, --namespace <TEXT>`</GCell>
      <GCell>Channel owner (user or organization). Alternative to the positional `<CHANNEL>` argument.</GCell>
    </GRow>
  </GBody>
</GTable>

### Example

Create a warning notice that expires in 30 days:

```sh theme={null}
anaconda channel notice create my-channel --message "Version 2.0 removes deprecated API. Migrate by Jan 2027." --level warning --expires-after 30
```

If you omit `--message` or expiration options, the CLI prompts you interactively (with a default expiration of 30 days). After creation, the CLI displays the notice ID and a hint showing how to list notices. You're then prompted to publish immediately—if you decline, the notice remains in draft status.

## Finding a notice ID

When you create a notice, the command outputs the notice ID (a UUID). If you didn't save it, use `list` to find it. Use `--status` to filter by `draft`, `published`, `archived`, or `deleted`.

<CodeGroup>
  ```sh Command theme={null}
  anaconda channel notice list <CHANNEL> --status <STATUS>
  ```

  ```sh Example theme={null}
  anaconda channel notice list my-channel --status published
  ```
</CodeGroup>

The output displays a table with each notice's ID, status, level, message, and expiration date. Copy the ID from the **Notice ID** column to use with other commands like `get`, `update`, `publish`, `archive`, or `delete`.

### Pagination

For channels with many notices, use pagination to limit the number of notices you are seeing:

* `--offset` — Number of notices to skip (default: 0)
* `--limit` — Maximum notices to return (default: 20)

```sh theme={null}
anaconda channel notice list my-channel --offset 5 --limit 10
```

## Publishing a notice

To make a draft or archived notice visible to channel users, use the `publish` command. Use the `--force` flag to skip the confirmation prompt.

<CodeGroup>
  ```sh Command theme={null}
  anaconda channel notice publish <CHANNEL> <NOTICE_ID> [--force]
  ```

  ```sh Example theme={null}
  anaconda channel notice publish my-channel 128cd00e-c58f-407f-aab2-ea39159e3cf3 --force
  ```
</CodeGroup>

## Getting notice details

View the full details of a specific notice, including status, level, message, expiration date, and timestamps.

<CodeGroup>
  ```sh Command theme={null}
  anaconda channel notice get <CHANNEL> <NOTICE_ID>
  ```

  ```sh Example theme={null}
  anaconda channel notice get my-channel 128cd00e-c58f-407f-aab2-ea39159e3cf3
  ```
</CodeGroup>

## Updating a notice

Modify an existing notice's message, level, status, or expiration. If you do not add all required information to the initial command, you will be prompted for each piece of information.

<CodeGroup>
  ```sh Command theme={null}
  anaconda channel notice update <CHANNEL> <NOTICE_ID> --message <TEXT> --level <LEVEL> --expires-after <DAYS>
  ```

  ```sh Example theme={null}
  anaconda channel notice update my-channel 128cd00e-c58f-407f-aab2-ea39159e3cf3 --message "Updated migration deadline: Feb 2027"
  ```
</CodeGroup>

## Archiving a notice

Archive a notice to stop showing it to users before its expiration date. Archived notices can be republished later using the `publish` command. Use the `--force` flag to skip the confirmation prompt.

<CodeGroup>
  ```sh Command theme={null}
  anaconda channel notice archive <CHANNEL> <NOTICE_ID> [--force]
  ```

  ```sh Example theme={null}
  anaconda channel notice archive my-channel 128cd00e-c58f-407f-aab2-ea39159e3cf3 --force
  ```
</CodeGroup>

## Deleting a notice

Delete a notice to remove it from the default notice list. Deleted notices can still be viewed with `--status deleted` but cannot be restored.

<CodeGroup>
  ```sh Command theme={null}
  anaconda channel notice delete <CHANNEL> <NOTICE_ID> [--force]
  ```

  ```sh Example theme={null}
  anaconda channel notice delete my-channel 128cd00e-c58f-407f-aab2-ea39159e3cf3 --force
  ```
</CodeGroup>

<Danger>
  Deleted notices cannot be restored. Consider archiving notices instead if you might need to republish them later.
</Danger>

## Organization channels

For organization channels, use the `--namespace` or `-n` flag to specify the organization. You must be an owner or administrator of the organization to manage its channel notices.

<CodeGroup>
  ```sh Command theme={null}
  anaconda channel notice <ACTION> --namespace <ORGANIZATION>
  ```

  ```sh Example theme={null}
  anaconda channel notice list --namespace my-org --status published
  ```
</CodeGroup>

## Best practices

* **Keep messages concise**: Use clear, actionable messages. Include a URL for additional details.
* **Set appropriate expiration dates**: Choose expiration dates that give users enough time to see and act on the notice.
* **Use meaningful notice levels**: Reserve `critical` for genuinely urgent issues to avoid alert fatigue.
* **Test with drafts**: Create notices as drafts first, review them, and then publish when ready.
* **Archive instead of delete**: Archive old notices for record-keeping rather than deleting them permanently.
