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.
+This flag must not be given for the `link` command.
+It is optional for the `daemon` command.
+For all other commands it is only optional if there is exactly one local user in the
+config directory.
+
*--dbus*::
Make request via user dbus.
Use "updateAccount" to undo this.
To remove a linked device, use "removeDevice" from the master device.
+*--delete-account*::
+Delete account completely from server. Cannot be undone without loss. You will
+have to be readded to each group.
+
+CAUTION: Only delete your account if you won't use this number again!
+
=== updateAccount
Update the account attributes on the signal server.
=== listDevices
-Show a list of connected devices.
+Show a list of linked devices.
=== removeDevice
-Remove a connected device.
+Remove a linked device.
Only works, if this is the master device.
-*-d* DEVICEID, *--deviceId* DEVICEID::
+*-d* DEVICE_ID, *--device-id* DEVICE_ID::
Specify the device you want to remove.
Use listDevices to see the deviceIds.
*-a* [ATTACHMENT [ATTACHMENT ...]], *--attachment* [ATTACHMENT [ATTACHMENT ...]]::
Add one or more files as attachment.
+*--note-to-self*::
+Send the message to self without notification.
+
*-e*, *--endsession*::
Clear session state and send end session message.
*-r*, *--remove*::
Remove a reaction.
+=== remoteDelete
+
+Remotely delete a previously sent message.
+
+RECIPIENT::
+Specify the recipients’ phone number.
+
+*-g* GROUP, *--group* GROUP::
+Specify the recipient group ID in base64 encoding.
+
+*-t* TIMESTAMP, *--target-timestamp* TIMESTAMP::
+Specify the timestamp of the message to delete.
+
=== receive
Query the server for new messages.
*-n* NAME, *--name* NAME::
Specify the new group name.
+*-d* DESCRIPTION, *--description* DESCRIPTION::
+Specify the new group description.
+
*-a* AVATAR, *--avatar* AVATAR::
Specify a new group avatar image file.
*-m* [MEMBER [MEMBER ...]], *--member* [MEMBER [MEMBER ...]]::
Specify one or more members to add to the group.
+*-r* [MEMBER [MEMBER ...]], *--remove-member* [MEMBER [MEMBER ...]]::
+Specify one or more members to remove from the group
+
+*--admin* [MEMBER [MEMBER ...]]::
+Specify one or more members to make a group admin
+
+*--remove-admin* [MEMBER [MEMBER ...]]::
+Specify one or more members to remove group admin privileges
+
+*--reset-link*::
+Reset group link and create new link password
+
+*--link* LINK_STATE::
+Set group link state: `enabled`, `enabled-with-approval`, `disabled`
+
+*--set-permission-add-member* PERMISSION::
+Set permission to add new group members: `every-member`, `only-admins`
+
+*--set-permission-edit-details* PERMISSION::
+Set permission to edit group details: `every-member`, `only-admins`
+
+*-e* EXPIRATION_SECONDS, *--expiration* EXPIRATION_SECONDS::
+Set expiration time of messages (seconds).
+To disable expiration set expiration time to 0.
+
=== quitGroup
Send a quit group message to all group members and remove self from member list.
*-d*, *--detailed*::
Include the list of members of each group and the group invite link.
+=== listContacts
+
+Show a list of known contacts with names.
+
=== listIdentities
List all known identity keys and their trust status, fingerprint and safety number.
=== updateProfile
-Update the name and avatar image visible by message recipients for the current users.
+Update the profile information shown to message recipients.
The profile is stored encrypted on the Signal servers.
-The decryption key is sent with every outgoing messages to contacts.
+The decryption key is sent with every outgoing messages to contacts and included
+in every group.
+
+*--given-name* NAME, *--name* NAME::
+New (given) name.
+
+*--family-name* FAMILY_NAME::
+New family name.
+
+*--about* ABOUT_TEXT::
+New profile status text.
-*--name*::
-New name visible by message recipients.
+*--about-emoji* EMOJI::
+New profile status emoji.
-*--avatar*::
-Path to the new avatar visible by message recipients.
+*--avatar* AVATAR_FILE::
+Path to the new avatar image file.
*--remove-avatar*::
-Remove the avatar visible by message recipients.
+Remove the avatar
=== updateContact
*-n*, *--name*::
Specify the new name for this contact.
-*-e*, *--expiration*::
+*-e*, *--expiration* EXPIRATION_SECONDS::
Set expiration time of messages (seconds).
To disable expiration set expiration time to 0.
Send a synchronization message with the local contacts list to all linked devices.
This command should only be used if this is the master device.
+=== sendSyncRequest
+
+Send a synchronization request message to the master device (for group, contacts, ...).
+The master device will respond with synchronization messages with full contact and
+group lists.
+
=== 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).
=== 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
+objects under the same bus name.
*--system*::
Use DBus system bus instead of user bus.
Add member to a group::
signal-cli -u USERNAME updateGroup -g GROUP_ID -m "NEW_MEMBER"
+Accept a group invitation::
+signal-cli -u USERNAME updateGroup -g GROUP_ID
+
Leave a group::
signal-cli -u USERNAME quitGroup -g GROUP_ID
Trust new key, without having verified it. Only use this if you don't care about security::
signal-cli -u USERNAME trust -a NUMBER
+== Exit codes
+* *1*: Error is probably caused and fixable by the user
+* *2*: Some unexpected error
+* *3*: Server or IO error
+* *4*: Sending failed due to untrusted key
+
== Files
The password and cryptographic keys are created when registering and stored in the current users home directory, the directory can be changed with *--config*: