Explain and use the Inline CLI (`inline`) for authentication, chats, users, spaces, messages, search, attachments, downloads, JSON output, and configuration. Use when asked how to use the Inline CLI or its commands, flags, outputs, or workflows.
Scanned 9/12/2026
Install to Claude Code
npx -y skills add aibot88/sec_skill_store --skill inline-cli --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Inline Cli?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/aibot88-inline-cli)More formats (shields.io, HTML) on the badges page.
---
name: inline-cli
description: Explain and use the Inline CLI (`inline`) for authentication, chats, users, spaces, messages, search, attachments, downloads, JSON output, and configuration. Use when asked how to use the Inline CLI or its commands, flags, outputs, or workflows.
---
# Inline CLI
## Global flags
- `--json`: Output JSON instead of human tables/details (available on all commands). This greatly increases the verbosity and information you can get. Most of the data is either not included or truncated/redacted in the default human readable mode. Use JSON mode when you need exact details of a chat, message, etc. You can start with default mode and switch to json mode for more details and form your response.
- `--pretty`: Pretty-print JSON output (default).
- `--compact`: Compact JSON output (no whitespace).
## Subcommands
### auth
- `inline auth login [--email you@x.com | --phone +15551234567]`
- Run an interactive login flow.
- If code is wrong, prompt to try again or edit email/phone (no hard exit).
- `inline auth me`
- Fetch and print the current user (verifies your token is still valid).
- `inline auth logout`
- Clear the stored token and current user.
### chats
- `inline chats list`
- List chats with human-readable names, unread count, and last message preview (sender + text in one column).
- `inline chats get [--chat-id 123 | --user-id 42]`
- Fetch a chat (thread or DM) by id.
- `inline chats participants --chat-id 123`
- List participants for a chat, including join date.
- `inline chats add-participant --chat-id 123 --user-id 42`
- Add a user to a chat.
- `inline chats remove-participant --chat-id 123 --user-id 42`
- Remove a user from a chat.
- `inline chats create --title "Project" [--space-id 31] [--description "Spec"] [--emoji ":rocket:"] [--public] [--participant 42]`
- Create a new chat or thread. If `--public` is set, participants must be empty.
- `inline chats create-dm --user-id 42`
- Create a private chat (DM).
- `inline chats mark-unread [--chat-id 123 | --user-id 42]`
- Mark a chat or DM as unread.
- `inline chats mark-read [--chat-id 123 | --user-id 42] [--max-id 456]`
- Mark a chat or DM as read. If `--max-id` is omitted, marks through the latest message.
- `inline chats delete --chat-id 123`
- Delete a chat (space thread). Prompts for confirmation unless `--yes` is provided.
### users
- `inline users list`
- List users that appear in your chats (derived from getChats).
- `inline users list --filter "name"`
- Filter users by name, username, email, or phone.
- `inline users get --id 42`
- Fetch one user by id (from the same getChats payload).
### spaces
- `inline spaces list`
- List spaces referenced by your chats (derived from getChats).
- `inline spaces members --space-id 31`
- List members in a space.
- `inline spaces invite --space-id 31 [--user-id 42 | --email you@x.com | --phone +15551234567] [--admin] [--public-chats]`
- Invite a user to a space (role is optional; defaults to server behavior).
- `inline spaces delete-member --space-id 31 --user-id 42`
- Remove a member from a space (prompts for confirmation; use `--yes` to skip).
- `inline spaces update-member-access --space-id 31 --user-id 42 [--admin | --member] [--public-chats]`
- Update a member's access/role. Provide `--admin` or `--member` (and optional `--public-chats`).
### notifications
- `inline notifications get`
- Show current notification settings.
- `inline notifications set [--mode all|none|mentions|important] [--silent | --sound]`
- Update notification settings.
### update
- `inline update`
- Download and install the latest release for this machine.
### doctor
- `inline doctor`
- Print diagnostic info (system, config, paths, auth state).
### messages
- `inline messages list [--chat-id 123 | --user-id 42] [--limit 50] [--offset-id 456] [--translate en]`
- List chat history for a chat or DM.
- `--translate <lang>` fetches translations and includes them in output.
- `inline messages export [--chat-id 123 | --user-id 42] [--limit 50] [--offset-id 456] --output PATH`
- Export chat history to a JSON file.
- `inline messages search [--chat-id 123 | --user-id 42] --query "onboarding" [--query "alpha beta"] [--limit 50]`
- Search messages in a chat or DM.
- `--query` is repeatable; each query can contain space-separated terms (ANDed within a query, ORed across queries). Extra whitespace is collapsed.
- `inline messages get --chat-id 123 --message-id 456 [--translate en]`
- Fetch one full message by id (includes media + attachments).
- `inline messages send [--chat-id 123 | --user-id 42] [--text "hi"] [--stdin] [--reply-to 456] [--mention USER_ID:OFFSET:LENGTH ...] [--attach PATH ...] [--force-file]`
- Send a message (markdown parsing enabled). Mentions are provided via `--mention` with UTF-16 offsets.
- `--stdin` reads message text from stdin.
- `--attach` is repeatable. Each attachment is sent as its own message; `--text` is reused as the caption.
- Folders are zipped before upload. Attachments over 200MB are rejected.
- `--force-file` uploads photos/videos as files (documents).
- `--mention` is repeatable and must match the message text (`user_id:offset:length` with UTF-16 units).
- `inline messages edit [--chat-id 123 | --user-id 42] --message-id 456 [--text "updated" | --stdin]`
- Edit a message by id.
- `inline messages delete [--chat-id 123 | --user-id 42] --message-id 456 [--message-id 789]`
- Delete one or more messages (prompts for confirmation; use `--yes` to skip).
- `inline messages add-reaction [--chat-id 123 | --user-id 42] --message-id 456 --emoji "👍"`
- Add an emoji reaction to a message (emoji characters only, no `:shortcode:`).
- `inline messages delete-reaction [--chat-id 123 | --user-id 42] --message-id 456 --emoji "👍"`
- Remove an emoji reaction from a message (emoji characters only, no `:shortcode:`).
- `inline messages download [--chat-id 123 | --user-id 42] --message-id 456 [--output PATH | --dir PATH]`
- Download the attachment from a message.
## Examples
- Login and greet user:
- `inline auth login` (prompts for email/phone + code, then prints welcome name)
- Verify who you are:
- `inline auth me`
- Check diagnostics:
- `inline doctor`
- Search messages in a chat:
- `inline messages search --chat-id 123 --query "design review"`
- JSON: `inline messages search --chat-id 123 --query "design review" --json`
- Translate and list messages:
- `inline messages list --chat-id 123 --translate en`
- Export messages to a file:
- `inline messages export --chat-id 123 --output ./messages.json`
- Send message with multiple attachments:
- `inline messages send --chat-id 123 --text "FYI" --attach ./photo.jpg --attach ./spec.pdf`
- Reply to a message:
- `inline messages send --chat-id 123 --reply-to 456 --text "on it"`
- Send a message with a mention entity:
- `inline messages send --chat-id 123 --text "@Sam hello" --mention 42:0:4`
- Download an attachment:
- `inline messages download --chat-id 123 --message-id 456 --dir ./downloads`
- Edit and delete a message:
- `inline messages edit --chat-id 123 --message-id 456 --text "updated"`
- `inline messages delete --chat-id 123 --message-id 456`
- Invite and manage members:
- `inline spaces invite --space-id 31 --email you@example.com`
- `inline spaces update-member-access --space-id 31 --user-id 42 --admin`
- JQ pipelines for lists:
- `inline users list --json | jq -r '.users[] | "\(.id)\t\(.first_name) \(.last_name)\t@\(.username // "")\t\(.email // "")"'`
- `inline users list --json | jq -r '.users[] | select((.first_name + " " + (.last_name // "") + " " + (.username // "") + " " + (.email // "")) | ascii_downcase | contains("mo")) | "\(.id)\t\(.first_name) \(.last_name)"'`
- `inline chats list --json | jq -r '.chats[] | "\(.id)\t\(.title // "")\tspace:\(if .space_id == null then "dm" else (.space_id | tostring) end)"'`
- `inline chats list --json | jq -r '.dialogs[] | select(.unread_count > 0) | "\(.chat_id)\tunread:\(.unread_count)"'`
- `inline messages list --chat-id 123 --json | jq -r '.messages[] | "\(.id)\t\(.from_id)\t\((.message // "") | gsub("\n"; " ") | .[0:80])"'`
## Agent Tips
### Finding users quickly
```bash
inline users list | grep -i "partial_name"
```
Faster than parsing JSON when you just need user ID.
### Filtering messages with jq
```bash
# Get last N outgoing messages (your messages)
inline messages list --user-id ID --json | jq '[.messages[] | select(.out == true)] | .[0:3]'
# Get last N incoming messages (their messages)
inline messages list --user-id ID --json | jq '[.messages[] | select(.out == false)] | .[0:3]'
```
### Multi-term search for feedback/bugs
```bash
inline messages search --user-id ID --query "bug" --query "issue" --query "loom" --query "broken" --limit 30 --json
```
Each --query is ORed together - useful for finding feedback items.
### Common patterns
- Use --user-id for DMs instead of looking up chat IDs
- Use --json + jq for programmatic filtering
- Use default (non-JSON) mode for quick human-readable output
### More quick tips
```bash
# Page back with offset-id
inline messages list --chat-id ID --limit 50 --offset-id 1234
# Get the latest message id
inline messages list --chat-id ID --limit 1 --json | jq '.messages[0].id'
# Export a batch for offline review
inline messages export --chat-id ID --limit 500 --output ./chat.json
# Compact JSON for pipelines
inline messages list --chat-id ID --json --compact | jq '.messages | length'
```
## JSON samples
Chat list (GetChatsResult, truncated to essential fields):
```
{
"dialogs": [
{
"peer": { "type": { "Chat": { "chat_id": 340 } } },
"space_id": 31,
"archived": false,
"pinned": false,
"read_max_id": 1,
"unread_count": 0,
"chat_id": 340,
"unread_mark": false
}
],
"chats": [
{
"id": 340,
"title": "Main",
"space_id": 31,
"description": "Main chat for everyone in the space",
"emoji": null,
"is_public": true,
"last_msg_id": 1,
"peer_id": { "type": { "Chat": { "chat_id": 340 } } },
"date": 1754585453
}
],
"spaces": [
{ "id": 31, "name": "Design", "creator": false, "date": 1750000000 }
],
"users": [
{
"id": 1000,
"first_name": "Ava",
"last_name": "Chen",
"username": "ava",
"email": "ava@example.com",
"min": false,
"bot": false
}
],
"messages": [
{
"id": 1,
"from_id": 1000,
"peer_id": { "type": { "Chat": { "chat_id": 340 } } },
"chat_id": 340,
"message": null,
"out": true,
"date": 1754585453,
"media": {
"media": {
"Document": {
"document": {
"id": 32,
"file_name": "recording.mp4",
"mime_type": "video/mp4",
"size": 6932635,
"cdn_url": "https://..."
}
}
}
}
}
]
}
```
Message list (GetChatHistoryResult, truncated to essential fields):
```
{
"messages": [
{
"id": 456,
"from_id": 42,
"peer_id": { "type": { "Chat": { "chat_id": 123 } } },
"chat_id": 123,
"message": "Ship it",
"out": true,
"date": 1733184000,
"attachments": {
"attachments": [
{
"id": 9001,
"attachment": {
"UrlPreview": {
"id": 88,
"url": "https://...",
"site_name": "Docs",
"title": "Spec",
"description": "API rollout spec"
}
}
}
]
}
}
]
}
```
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!