Skip to content

alis specialist

Find, read and reply to Alis Build conversations. Every builder has a build specialist, a human engineer, reachable from here.

Synopsis

Shell
alis specialist approve-request <ticket> [flags]
alis specialist assign <ticket> --to <email|users/ID> [flags]
alis specialist decline-request <ticket> [flags]
alis specialist file <ticket> --in linear [--team KEY] [flags]
alis specialist get <ticket> [flags]
alis specialist invite <ticket> --to <email|users/ID> [--to <email|users/ID> ...] [flags]
alis specialist list [<org>.<product>] [flags]
alis specialist resolve <email|users/ID> [flags]
alis specialist send-message [flags]
alis specialist send-session [flags]
alis specialist tickets [flags]
alis specialist wait <ticket> [flags]

Aliases: specialist, support.

Description

Human engineers review conversations first, including conversations written by AI agents. Keep messages concise and factual: the problem, its impact, the key evidence and the help needed. list lists people; tickets lists conversations. Conversations are addressable as tickets/<id> or the bare id.

Target Command shape Audience
The Alis Build platform team send-message --message … A new platform-team conversation
A named teammate send-message --to <email\|users/ID> --product <org>.<product> A private peer conversation: sender, recipient, invitees. Support staff have no implicit access.
An existing conversation send-message --ticket <id> Its current participants

Subcommands

alis specialist tickets

List the specialist conversations you can see (started by you or added to), newest first, with state and console link.

alis specialist tickets [flags]

Aliases: tickets, conversations.

Flag Type Default Meaning
--inbox bool false List the open staff inbox instead of your own conversations (specialists only).
--state <state> string open Filter by state: open, resolved or all.

--json returns tickets[] with ticket, url, display_name, state, source, creator, assignee, participants[], create_time, update_time, answered and waiting_on.

alis specialist get

Read a specialist conversation: state, participants, the console link to hand to a person, and the messages with authors and timestamps.

alis specialist get <ticket> [flags]
Flag Type Default Meaning
--last <n> int 0 (all) Only include the newest N messages.

Under --json: waiting_on says whose move it is (builder, specialist or nobody), pending_action names what you are being asked for (approval_request, diagnostics_requested, session_requested, question, reply) with the exact command that answers it, answered is true when someone else has posted since your most recent message, and last_reply is that reply.

alis specialist send-message

Start or continue a build specialist conversation. Without --ticket or --to, starts a new conversation with the Alis Build platform team. Provide the message with --message, --message-file <path> or stdin. The first non-empty line becomes the subject; Markdown renders in the console; the 2 MiB body limit is a transport cap.

alis specialist send-message [flags]
Flag Type Default Meaning
--draft bool false Save a server-side draft instead of delivering; its author reviews and sends it from the conversation composer. Requires --ticket.
--dry-run bool false Print the prepared envelope (sender, resolved recipient, audience, subject, body digest) and send nothing.
--expect-sha256 <digest> string Refuse to send unless the body's sha256 matches (from --dry-run).
--idempotency-key <key> string Unique key for this send; a retry with the same key returns the original receipt instead of sending again.
--message <text> string The message; omit or use - to read from stdin.
--message-file <path> string Read the message from this file (UTF-8 text or Markdown).
--product <org.product> string the current directory context Product for --to.
--ticket <id> string Existing conversation to post on.
--to <email\|users/ID> string Current product member to start a private conversation with (exact email match).
--yes bool false Skip the send confirmation prompt (same as --approve).

The receipt carries ticket, url, message, state: persisted, recipient, sender, audience, body.sha256, sent_at, verified and read_back; a replayed send adds replayed: true. persisted means stored, not that the person has read it.

alis specialist send-session

Locate a local coding-agent session transcript (an Alis agent, Claude Code, Codex or Gemini CLI), gzip it and upload it to a specialist conversation. Credentials are masked as [REDACTED:<kind>] before upload; transcripts over the 10 MiB cap are tail-truncated.

alis specialist send-session [flags]
Flag Type Default Meaning
--harness <name> string Narrow the transcript search: alis-agent, claude-code, codex or gemini.
--session <id> string the session this command runs in (ALIS_SESSION_ID) Session whose transcript to share.
--ticket <id> string Conversation to upload the transcript to.
--yes bool false Skip the upload confirmation prompt (same as --approve).

alis specialist wait

Block until someone other than you posts after your most recent message, or the conversation is resolved. Exits 0 with the reply on stdout; exits 5 with a reply_timeout envelope when --timeout passes first.

alis specialist wait <ticket> [flags]
Flag Type Default Meaning
--after <time> string your most recent message Only count replies created after this RFC 3339 time.
--timeout <duration> duration 0 (indefinitely) Give up waiting after this duration.

alis specialist list

List the product's current members (administrators, builders and viewers) who can be selected for a private builder-to-builder conversation. The product is detected from the current directory when omitted.

alis specialist list [<org>.<product>] [flags]

No flags beyond the global flags.

alis specialist resolve

Resolve an email address or users/ID to exactly one current member of the product, and say whether you may start a private conversation with them and who will see it. Nothing is sent.

alis specialist resolve <email|users/ID> [flags]
Flag Type Default Meaning
--product <org.product> string the current directory context Product to resolve within.

--json returns recipient, member, can_send (with reason), visibility and the exact send command.

alis specialist invite

Add teammates to an existing conversation, including a private peer conversation. Invited people gain access to the conversation's history and future messages. All recipients are resolved before anyone is added, using the same exact email or users/ID lookup as resolve.

Shell
alis specialist invite tickets/ID --to alex@example.com --to sam@example.com --dry-run --json
# Review the people and audience, then approve:
alis specialist invite tickets/ID --to alex@example.com --to sam@example.com --approve --json
Flag Type Default Meaning
--to <email\|users/ID> string array Person to invite. Required; repeat for multiple people.
--product <org.product> string conversation's product, then current directory Product member directory to resolve people within.
--dry-run bool false Show resolved people, current participants, visibility and the approval command without changing access.
--yes bool false Skip the confirmation prompt (same as --approve).

Existing invitation permissions apply. Builders can only invite people from their own email domain. Reopen a resolved conversation before inviting people. Private peer conversations remain private; support staff have no implicit access.

People already on the conversation are skipped. --json returns ticket, url, product, sender, audience, visibility, recipients, participants and read_back. Each unique recipient has a state of added or already_participant; a dry run also returns dry_run: true, the exact invite command and not_attempted recipients.

If a request fails, error.details.recipients reports confirmed additions, an unconfirmed result and people not_attempted. Use read_back to check access. Retrying the same command skips existing participants without creating duplicates.

alis specialist approve-request

Approve a build environment access request or a product request from a terminal. Access approval makes the requester a builder on every product in the build environment; product approval creates the product with a development deployment environment and makes the requester its administrator. The server verifies that you are an administrator who may decide it.

alis specialist approve-request <ticket> [flags]
Flag Type Default Meaning
--yes bool false Skip the decision confirmation prompt (same as --approve).

alis specialist decline-request

Decline a request. A reason is required and is shown to the requester.

alis specialist decline-request <ticket> [flags]
Flag Type Default Meaning
--reason <text> string Why the request is declined (required).
--yes bool false Skip the decision confirmation prompt (same as --approve).

alis specialist assign

Hand a specialist conversation to another specialist, or release it back to the general inbox. Only the conversation's build specialists may hand it over; a builder may only hand to someone on their own email domain. Not available on private peer conversations.

alis specialist assign <ticket> --to <email|users/ID> [flags]
Flag Type Default Meaning
--leave bool false Step out of the conversation after handing it over.
--note <text> string A short hand-over note posted in the conversation.
--release bool false Release the conversation to the general inbox instead (staff only).
--to <email\|users/ID> string The new specialist.
--yes bool false Skip the confirmation prompt (same as --approve).

alis specialist file

File an issue in an external tracker from a specialist conversation. Only the conversation's build specialists may file; filing again where an issue exists returns the existing one. Anyone on the responding side files in their own Linear workspace through the Linear connection on their account (Connected Apps on the console's account page).

alis specialist file <ticket> --in linear [--team KEY] [flags]
Flag Type Default Meaning
--in <tracker> string Tracker to file in (required; linear is the only accepted value).
--team <key\|id> string Team in your own Linear workspace (needed when it has several teams).
--yes bool false Skip the confirmation prompt (same as --approve).

Examples

Shell
alis specialist tickets --state all --json
alis specialist get tickets/<id> --json
alis specialist send-message --message-file ./ticket.md --json
alis specialist send-message --to ana@example.com --product acme.shop --message "Could you review the orders proto?" --json
alis specialist send-message --ticket <id> --message "Thanks, shipping a fix."
alis specialist send-message --message-file ./ticket.md --dry-run --json
alis specialist wait tickets/<id> --timeout 2h --json
alis specialist send-session --ticket <id> --harness claude-code --json
alis doctor --ticket <id>

Error codes

network_unreachable (nothing sent), signed_out (exit 4), recipient_not_found, recipient_ambiguous (candidates in error.details), recipient_not_member, recipient_is_self, recipient_invalid, product_required, product_not_found, send_denied, ticket_resolved (start a new conversation), message_too_large, message_not_utf8, message_file_unreadable, message_changed, unsupported_backend. Every envelope says whether the message was sent.