---
title: "Raise and read support tickets"
url: "https://docs.alisx.com/how-to/help/raise-and-read-support-tickets/"
---
# Raise and read support tickets

Message your build specialist from the terminal, attach the evidence, and read or wait for the reply. Every builder has a build specialist: a human engineer who reviews conversations first, including conversations written by agents.

## Prerequisites

- A signed-in CLI.
- What happened: the command, the deployment environment or resource id, the exact error.

## Raise a ticket

1. Write the message. Keep it short, usually under 200 words: a specific subject on the first line, then the problem and its impact, expected versus actual, the command and ids, what you tried, and the help you need. Say when something is unknown. Do not paste a transcript or a full log.

    ```markdown title="ticket.md"
    Build access denied for acme.shop.orders.v1

    `alis build acme.shop.orders.v1 --json` fails with `PermissionDenied`, blocking our fix.
    `alis doctor --json` reports no local issues. Can you check my build access?
    ```

2. Send it to the Alis Build platform team:

    ```bash title="Terminal"
    alis specialist send-message --message-file ./ticket.md --json
    ```

    The command asks you to confirm, then returns a receipt with `ticket`, `url` (the console page), `state: persisted` and `verified`. `persisted` means stored, not read.

3. Attach evidence separately, so the message stands on its own:

    ```bash title="Terminal"
    alis doctor --ticket <ticket-id>
    alis specialist send-session --ticket <ticket-id> --harness claude-code
    ```

    Diagnostics never include credentials; session transcripts have credentials masked before upload.

=== "To a teammate instead"

    A private conversation with a member of your product; support staff get no implicit access:

    ```bash title="Terminal"
    alis specialist resolve ana@example.com --product acme.shop --json
    alis specialist send-message --to ana@example.com --product acme.shop --message-file ./memo.md --json
    ```

    `resolve` checks the person and shows who will see the conversation. The email must match one current member exactly.

=== "From an agent"

    An agent prepares, gets approval, then sends with a key that makes retries safe:

    ```bash title="Agent runs"
    alis specialist send-message --message-file ./ticket.md --dry-run --json
    alis specialist send-message --message-file ./ticket.md --expect-sha256 <digest> --idempotency-key <unique> --approve --json
    ```

    `--dry-run` sends nothing and prints the envelope with the body digest. `--approve` is the human's go-ahead; an agent never adds it on its own. A retry with the same `--idempotency-key` returns the original receipt with `replayed: true`.

## Read tickets

1. List your conversations:

    ```bash title="Terminal"
    alis specialist tickets --state all --json
    ```

    Each has `ticket`, `url`, `display_name`, `state`, `answered` and `waiting_on`.

2. Read one:

    ```bash title="Terminal"
    alis specialist get tickets/<id> --json
    ```

    `waiting_on` says whose move it is (`builder`, `specialist`, `nobody`); `pending_action` names what you are asked for with the exact `command` that answers it.

3. Reply on the same conversation:

    ```bash title="Terminal"
    alis specialist send-message --ticket <id> --message "Thanks, shipping a fix."
    ```

4. Wait for the next reply instead of polling:

    ```bash title="Terminal"
    alis specialist wait tickets/<id> --timeout 2h --json
    ```

    Exit 0 with the reply, or exit 5 with `reply_timeout` when nothing changed. `alis support` is an alias for `alis specialist`.

In the TUI, ++s++ opens the Build specialist page, ++plus++ starts a conversation, and on a failed operation ++s++ opens a conversation about that failure.

Related: [alis specialist](https://docs.alisx.com/reference/cli/specialist.md), [Diagnose problems](https://docs.alisx.com/how-to/cli/diagnose-problems.md).
