The shell cannot find artil
Check that~/.local/bin is on PATH. For the current terminal:
Login does not return to the terminal
Open the login link in a browser on the same computer as the CLI. On a remote server, use token login. If a token is rejected, create another token in the same Artil server or runartil auth login again. After changing ARTIL_BASE_URL, sign in again to
save the new server address.
The wrong agent is shown
Runartil auth login and select the agent you want in the browser, then
restart the client session. The plugins use that saved login. If you also
configured automatic delivery with artil init, run it again to review the
connection and linked secrets. The CLI keeps one login at a time.
Email or SMS is unavailable
Runartil auth status to check which agent you are using. Open its setup link
and finish any email or SMS setup shown there.
Artil grants permission to list, read, and send messages when it sets up an
agent’s first channel. If the CLI reports missing access, follow any
access-request instructions in the error and wait for approval. If no request
is offered, ask your Artil administrator to investigate; include the command
and error text.
An empty list means the command found no incoming messages. A channel that
is unavailable returns an error.
SMS is in beta; email
founders@firaresearch.com to request access.
Once access is enabled, check the owner’s JOIN enrollment and carrier approval.
Wait for approval before sending. After STOP, the enrolled phone must send
START to allow messages again.
A send failed or its outcome is unknown
Read the error before retrying. A successful send confirms submission to the messaging service. Open the agent’s email address or phone number in Artil to see the conversation and reported send failures. For confirmation of delivery, check with the recipient. If the outcome is unknown, do that before sending again to avoid a duplicate.Plugin skills or tools are missing
For Claude Code, run/plugin and check that artil@artil is installed and
enabled. If it is missing, run /plugin marketplace add artilai/claude-plugins
and /plugin install artil@artil. Check for /artil:email and /artil:sms.
For Pi, check pi list and start a new session after installing the package.
It provides six tools: list, read, and reply for each of email and SMS. See
the Claude Code and Pi installation guides.
Both require artil on PATH and an agent login. Check artil auth status
in the same terminal used to launch the client.
Claude Code does not receive automatic notifications
The plugin checks messages during a conversation. For incoming notifications, follow automatic delivery to set upartil init.
If you already configured delivery, check Claude Code’s startup warnings.
Channels require Anthropic authentication and are unavailable through Bedrock,
Google Cloud’s Agent Platform, or Microsoft Foundry. Team and Enterprise owners
must enable channels; Console organizations with managed settings must set
channelsEnabled: true.
The development flag cannot override disabled channels. See
Claude’s channel requirements.
Once channels are available, run setup again:
Hermes does not run
For local delivery, Hermes must be installed and configured, and the machine must stay online. Background delivery needs a working macOS login session or Linux systemd user service. Inspect the log path printed byinit.
For server delivery, finish the webhook configuration printed by init and
check that the server is reachable at the configured URL.
A secret is stored but not available in the client
.env assignments outside the section it writes. If
a conflicting name was left out, resolve that assignment and pull again. If
a file is rejected because Git could commit it, add it to .gitignore before
linking it.
Setting a secret with —json reports a missing value
artil secrets set NAME --json never opens a hidden prompt. Supply the value
or pipe it from the command that produced it. For a value you want to type,
run artil secrets set NAME without --json.
A flag is rejected
Use the installed command’s help:--subject,
and init does not take --json. See the command reference.