== Synopsis
-*signal-cli* [--config CONFIG] [-h | -v | -u USERNAME | --dbus | --dbus-system] command [command-options]
+*signal-cli* [--config CONFIG] [-h | -v | -a ACCOUNT | --dbus | --dbus-system] command [command-options]
== Description
Make sure you have full read/write access to the given directory.
(Default: `$XDG_DATA_HOME/signal-cli` (`$HOME/.local/share/signal-cli`))
-*-u* USERNAME, *--username* USERNAME::
+*-a* ACCOUNT, *--account* ACCOUNT::
Specify your phone number, that will be your identifier.
The phone number must include the country calling code, i.e. the number must start with a "+" sign.
*-o* OUTPUT-MODE, *--output* OUTPUT-MODE::
Specify if you want commands to output in either "plain-text" mode or in "json". Defaults to "plain-text"
+*--trust-new-identities* TRUST-MODE::
+Choose when to trust new identities:
+- `on-first-use` (default): Trust the first seen identity key from new users,
+ changed keys must be verified manually
+- `always`: Trust any new identity key without verification
+- `never`: Don't trust any unknown identity key, every key must be verified manually
+
== Commands
=== register
Update the account attributes on the signal server.
Can fix problems with receiving messages.
+*-n* NAME, *--device-name* NAME::
+Set a new device name for the main or linked device
+
+=== updateConfiguration
+
+Update signal configs and sync them to linked devices.
+This command only works on the main devices.
+
+*--read-receipts* {true,false}::
+Indicates if Signal should send read receipts.
+
+*--unidentified-delivery-indicators* {true,false}::
+Indicates if Signal should show unidentified delivery indicators.
+
+*--typing-indicators* {true,false}::
+Indicates if Signal should send/show typing indicators.
+
+*--link-previews* {true,false}::
+Indicates if Signal should generate link previews.
+
=== setPin
Set a registration lock pin, to prevent others from registering this number.
=== link
Link to an existing device, instead of registering a new number.
-This shows a "tsdevice:/…" URI. If you want to connect to another signal-cli instance, you can just use this URI.
+This shows a "sgnl://linkdevice?uuid=..." URI. If you want to connect to another signal-cli instance, you can just use this URI.
If you want to link to an Android/iOS device, create a QR code with the URI (e.g. with qrencode) and scan that in the Signal app.
*-n* NAME, *--name* NAME::
*--uri* URI::
Specify the uri contained in the QR code shown by the new device.
-You will need the full uri enclosed in quotation marks, such as "tsdevice:/?uuid=....."
+You will need the full URI such as "sgnl://linkdevice?uuid=..." (formerly "tsdevice:/?uuid=...")
+Make sure to enclose it in quotation marks for shells.
=== listDevices
RECIPIENT::
Specify the recipients’ phone number.
-*-g* GROUP, *--group* GROUP::
+*-g* GROUP, *--group-id* GROUP::
Specify the recipient group ID in base64 encoding.
*-m* MESSAGE, *--message* MESSAGE::
*--note-to-self*::
Send the message to self without notification.
-*-e*, *--endsession*::
+*-e*, *--end-session*::
Clear session state and send end session message.
+*--mention*::
+Mention another group member (syntax: start:length:recipientNumber)
+In the apps the mention replaces part of the message text, which is specified by the start and length values.
+e.g.: `-m "Hi X!" --mention "3:1:+123456789"`
+
=== sendReaction
Send reaction to a previously received or sent message.
RECIPIENT::
Specify the recipients’ phone number.
-*-g* GROUP, *--group* GROUP::
+*-g* GROUP, *--group-id* GROUP::
Specify the recipient group ID in base64 encoding.
*-e* EMOJI, *--emoji* EMOJI::
*-r*, *--remove*::
Remove a reaction.
+=== sendReceipt
+
+Send a read or viewed receipt to a previously received message.
+
+RECIPIENT::
+Specify the sender’s phone number.
+
+*-t* TIMESTAMP, *--target-timestamp* TIMESTAMP::
+Specify the timestamp of the message to which to react.
+
+*--type* TYPE::
+Specify the receipt type, either `read` (the default) or `viewed`.
+
+=== sendTyping
+
+Send typing message to trigger a typing indicator for the recipient.
+Indicator will be shown for 15seconds unless a typing STOP message is sent first.
+
+RECIPIENT::
+Specify the recipients’ phone number.
+
+*-g* GROUP, *--group-id* GROUP::
+Specify the recipient group ID in base64 encoding.
+
+*-s*, *--stop*::
+Send a typing STOP message.
+
=== remoteDelete
Remotely delete a previously sent message.
RECIPIENT::
Specify the recipients’ phone number.
-*-g* GROUP, *--group* GROUP::
+*-g* GROUP, *--group-id* GROUP::
Specify the recipient group ID in base64 encoding.
*-t* TIMESTAMP, *--target-timestamp* TIMESTAMP::
Create or update a group.
If the user is a pending member, this command will accept the group invitation.
-*-g* GROUP, *--group* GROUP::
+*-g* GROUP, *--group-id* GROUP::
Specify the recipient group ID in base64 encoding.
If not specified, a new group with a new random ID is generated.
*--set-permission-edit-details* PERMISSION::
Set permission to edit group details: `every-member`, `only-admins`
+*--set-permission-send-messages* PERMISSION::
+Set permission to send messages in group: `every-member`, `only-admins`
+Groups where only admins can send messages are also called announcement groups
+
*-e* EXPIRATION_SECONDS, *--expiration* EXPIRATION_SECONDS::
Set expiration time of messages (seconds).
To disable expiration set expiration time to 0.
Send a quit group message to all group members and remove self from member list.
If the user is a pending member, this command will decline the group invitation.
-*-g* GROUP, *--group* GROUP::
+*-g* GROUP, *--group-id* GROUP::
Specify the recipient group ID in base64 encoding.
*--delete*::
*-v* VERIFIED_SAFETY_NUMBER, *--verified-safety-number* VERIFIED_SAFETY_NUMBER::
Specify the safety number of the key, only use this option if you have verified the safety number.
+Can be either the plain text numbers shown in the app or the bytes from the QR-code,
+encoded as base64.
=== updateProfile
[CONTACT [CONTACT ...]]::
Specify the phone numbers of contacts that should be blocked.
-*-g* [GROUP [GROUP ...]], *--group* [GROUP [GROUP ...]]::
+*-g* [GROUP [GROUP ...]], *--group-id* [GROUP [GROUP ...]]::
Specify the group IDs that should be blocked in base64 encoding.
=== unblock
[CONTACT [CONTACT ...]]::
Specify the phone numbers of contacts that should be unblocked.
-*-g* [GROUP [GROUP ...]], *--group* [GROUP [GROUP ...]]::
+*-g* [GROUP [GROUP ...]], *--group-id* [GROUP [GROUP ...]]::
Specify the group IDs that should be unblocked in base64 encoding.
=== sendContacts
=== uploadStickerPack
-Upload a new sticker pack, consisting of a manifest file and the stickers in WebP format (maximum size for a sticker file is 100KiB).
+Upload a new sticker pack, consisting of a manifest file and the sticker images.
+Images must conform to the following specification: (see https://support.signal.org/hc/en-us/articles/360031836512-Stickers#sticker_reqs )
+- Static stickers in PNG or WebP format
+- Animated stickers in APNG format,
+- Maximum file size for a sticker file is 300KiB
+- Image resolution of 512 x 512 px
+
The required manifest.json has the following format:
[source,json]
"title": "<STICKER_PACK_TITLE>",
"author": "<STICKER_PACK_AUTHOR>",
"cover": { // Optional cover, by default the first sticker is used as cover
- "file": "<name of webp file, mandatory>",
+ "file": "<name of image file, mandatory>",
+ "contentType": "<optional>",
"emoji": "<optional>"
},
"stickers": [
{
- "file": "<name of webp file, mandatory>",
+ "file": "<name of image file, mandatory>",
+ "contentType": "<optional>",
"emoji": "<optional>"
}
...
=== daemon
signal-cli can run in daemon mode and provides an experimental dbus interface.
-If no `-u` username is given, all local users will be exported as separate dbus
+If no `-a` account is given, all local accounts will be exported as separate dbus
objects under the same bus name.
*--system*::
== Examples
Register a number (with SMS verification)::
-signal-cli -u USERNAME register
+signal-cli -a ACCOUNT register
Verify the number using the code received via SMS or voice::
-signal-cli -u USERNAME verify CODE
+signal-cli -a ACCOUNT verify CODE
Send a message to one or more recipients::
-signal-cli -u USERNAME send -m "This is a message" [RECIPIENT [RECIPIENT ...]] [-a [ATTACHMENT [ATTACHMENT ...]]]
+signal-cli -a ACCOUNT send -m "This is a message" [RECIPIENT [RECIPIENT ...]] [-a [ATTACHMENT [ATTACHMENT ...]]]
Pipe the message content from another process::
-uname -a | signal-cli -u USERNAME send [RECIPIENT [RECIPIENT ...]]
+uname -a | signal-cli -a ACCOUNT send [RECIPIENT [RECIPIENT ...]]
Create a group::
-signal-cli -u USERNAME updateGroup -n "Group name" -m [MEMBER [MEMBER ...]]
+signal-cli -a ACCOUNT updateGroup -n "Group name" -m [MEMBER [MEMBER ...]]
Add member to a group::
-signal-cli -u USERNAME updateGroup -g GROUP_ID -m "NEW_MEMBER"
+signal-cli -a ACCOUNT updateGroup -g GROUP_ID -m "NEW_MEMBER"
Accept a group invitation::
-signal-cli -u USERNAME updateGroup -g GROUP_ID
+signal-cli -a ACCOUNT updateGroup -g GROUP_ID
Leave a group::
-signal-cli -u USERNAME quitGroup -g GROUP_ID
+signal-cli -a ACCOUNT quitGroup -g GROUP_ID
Send a message to a group::
-signal-cli -u USERNAME send -m "This is a message" -g GROUP_ID
+signal-cli -a ACCOUNT send -m "This is a message" -g GROUP_ID
Trust new key, after having verified it::
-signal-cli -u USERNAME trust -v SAFETY_NUMBER NUMBER
+signal-cli -a ACCOUNT trust -v SAFETY_NUMBER NUMBER
Trust new key, without having verified it. Only use this if you don't care about security::
-signal-cli -u USERNAME trust -a NUMBER
+signal-cli -a ACCOUNT trust -a NUMBER
== Exit codes
* *1*: Error is probably caused and fixable by the user
`$XDG_DATA_HOME/signal-cli/` (`$HOME/.local/share/signal-cli/`)
-For legacy users, the old config directories are used as a fallback:
-
- $HOME/.config/signal/
-
- $HOME/.config/textsecure/
-
== Authors
Maintained by AsamK <asamk@gmx.de>, who is assisted by other open source contributors.