- Archive old sessions/sender keys when a recipient's identity key has changed
- Fix profile fetch with an invalid LANG variable
- Send group messages with sender keys (more efficient for larger groups)
- New command
listStickerPacks
to display all known sticker packs - New flag
--sticker
forsend
command to send stickers
- Improve exit code for message sending. Exit with 0 status code if the message was sent successfully to at least one recipient, otherwise exit with status code 2 or 4 (for untrusted).
- Download profiles in parallel for improved perfomance
--verbose
flag can be specified multiple times for additional log output- Enable more security options for systemd service file
- Rename sandbox to staging environment, to match the upstream name.
- The first incoming message after registration can now always be decrypted successfully
- Ignore decryption failures from blocked contacts and don't send a resend request.
Attention: Now requires Java 17 and libsignal-client version 0.11
- The daemon command now provides a JSON-RPC based socket interface (
--socket
and--tcp
) - New daemon command flag
--receive-mode
to configure when messages are received - New daemon command flag
--no-receive-stdout
to prevent outputting messages on stdout - New command
listAccounts
that lists all registered local accounts - New command
removeContact
- Extend
send
command to allow sending mentions (--mention
) and quotes (--quote-timestamp
,--quote-author
,--quote-message
,--quote-mention
) - New dbus methods sendGroupTying, unregister, deleteAccount
- New dbus events MessageReceivedV2, ReceiptReceivedV2, SyncMessageReceivedV2 that provide an extras parameter with additional message info as a key/value map
- New dbus method sendViewedReceipt (Thanks @John Freed)
- New dbus object Configuration to read and update configuration values (Thanks @John Freed)
- Payment info in json receive output (Thanks @technillogue)
-c
alias for--config
(Thanks @technillogue)
- libzkgroup dependency is no longer required
- Renamed
-u
and--username
flags to-a
and--account
to prevent confusion with upcoming Signal usernames. The old flags are also still supported for now. - Respect phone number sharing mode and unlisted state set by main device
- Adapt register command to reactivate account if possible.
- dbus-java now uses Java 16 native unix sockets, which should provide better cross-platform compatibility
- If sending to a recipient fails (e.g. unregistered) signal-cli now exits with a success exit code and prints additional information about the failure.
- Registering an existing unregistered account now works reliably in daemon mode
- Fixed an issue with loading some old config files without UUID
- More reliable send behavior if some recipients are unregistered
- dbus
listNumbers
method works again
- Improved provisioning error handling if the last steps fail
- Adapt behavior of receive command as dbus client to match normal mode
- Update captcha url for proof required handling
Attention: Now requires native libzkgroup version 0.8
- New command
updateConfiguration
which allows setting configurations for linked devices - Improved dbus daemon for group handling, groups are now exported as separate dbus objects
- Linked devices can be managed via dbus
- New dbus methods sendTyping and sendReadReceipt (Thanks @JtheSaw)
- New dbus methods submitRateLimitChallenge, isRegistered, listDevices, setExpirationTimer, sendContacts, sendSyncRequest, uploadStickerPack, setPin and removePin (Thanks @John Freed)
- New dbus method getSelfNumber
- Do not send message resend request to own device
- Allow message from pending member to accept group invitations
- Fix issue which could cause signal-cli to repeatedly send the same delivery receipts
- Reconnect websocket after connection loss
- Use new provisioning URL
sgnl://linkdevice
instead oftsdevice:/
- The gradle command to build a graalvm native image is now
./gradlew nativeCompile
Attention: Now requires native libsignal-client version 0.9
- Removed deprecated
--json
parameter, use global parameter--output=json
instead - Json output format of
listGroups
command changed: Members are now arrays of{"number":"...","uuid":"..."}
objects instead of arrays of strings. - Removed deprecated fallback data paths, only
$XDG_DATA_HOME/signal-cli
is used now For those still using the old paths ($HOME/.config/signal
,$HOME/.config/textsecure
) you need to move those to the new location.
- New global parameter
--trust-new-identities=always
to allow trusting any new identity key without verification - New parameter
--device-name
forupdateAccount
command to change the device name (also works for the main device) - New SignalControl DBus interface, to register/verify/link new accounts
- New
jsonRpc
command that provides a JSON-RPC based API on stdout/stdin - Support for announcement groups
- New parameter
--set-permission-send-messages
forupdateGroup
to create an announcement group - New
sendReceipt
command to send read and viewed receipts - Support for receiving sender key messages, mobile apps can now send messages more efficiently with server-side fan-out to groups with signal-cli members.
- Support for reading data from remote Signal storage. Now v2 groups will be shown after linking a new device.
- New
submitRateLimitChallenge
command that can be used to lift some rate-limits by solving a captcha
- Store identity key correctly when sending a message after a recipient has changed keys
- Source name is included in JSON receive output (Thanks @technillogue)
- Allow updateContact command to only set expiration timer without requiring a name parameter
- Incorrect error handling in register command
Attention: Now requires native libsignal-client version 0.8.1
- New parameters for
updateGroup
command for group v2 features:--description
,--remove-member
,--admin
,--remove-admin
,--reset-link
,--link
,--set-permission-add-member
,--set-permission-edit-details
,--expiration
- New
--admin
parameter forquitGroup
to set an admin before leaving the group - New
--delete
parameter forquitGroup
, to delete the local group data - New 'sendTyping' command to send typing indicators
- Fixed issue that prevented registration with invalid locales
- Prevent last admin of a group from leaving the group
- All commands now show a short description with
--help
- Now a hint is shown if messages aren't received regularly
- Group edit conflicts are now resolved automatically
- Upgrading from account files with older profiles
- Building native image with graalvm
- A manual page for the DBus interface (Thanks @bublath, @exquo)
- Remote message delete command (Thanks @adaptivegarage)
- sendSyncRequest command to request complete contact/group list from master device
- New
--delete-account
argument for unregister (Dangerous) - New
--family-name
argument for updateProfile
- Sending reaction to group (Thanks @adaptivegarage)
- Displaying of address for messages from untrusted identities
- Handling of recipient number or uuid changes (e.g. after account deletions)
- Only respond to sync requests from master device
- Display of quit group messages
- Unlimited strength crypto is now enabled automatically for JREs that require it (Thanks @i-infra)
- Only one identity key is stored per recipient and updated from profile (to match app behavior)
- updateContact, block and unblock are now disabled for linked devices
- After registering an empty profile is created so new groups can be joined immediately
- If message decryption fails due to a broken session, the session is automatically renewed
- Rework account storage for better reliability
- Improved device linking flow
- Allow relinking existing account
- Encrypt/Decrypt device names
- New dbus commands: updateProfile, listNumbers, getContactNumber, quitGroup, isContactBlocked, isGroupBlocked, isMember, joinGroup (Thanks @bublath)
- Additional output for json format: shared contacts (Thanks @Atomic-Bean)
- Improved plain text output to be more consistent and synced messages are now indented
- Issue with broken sessions with linked devices
- Behavior of
trust
command improved, when trusting a new identity key all other known keys for the same number are removed.
Attention: For all signal protocol functionality an additional native library is now required: libsignal-client. See https://github.com/AsamK/signal-cli/wiki/Provide-native-lib-for-libsignal for more information.
- Experimental support for building a GraalVM native image
- Support for setting profile about text and emoji
- Incorrect error message when removing a non-existent profile avatar
- Notify linked devices after profile has been updated
- After registering a new account, receiving messages didn't work You may have to register and verify again to fix the issue.
- Creating v1 groups works again
getUserStatus
command to check if a user is registered on Signal (Thanks @Atomic-Bean)- Global
--verbose
flag to increase log level - Global
--output=json
flag, currently supported byreceive
,daemon
,getUserStatus
,listGroups
--note-to-self
flag forsend
command to send a note to linked devices- More info for received messages in json output: stickers, viewOnce, typing, remoteDelete
- signal-cli can now be used without the username
-u
flag For daemon command all local users will be exposed as dbus objects. If only one local user exists, all other commands will use that user, otherwise a user has to be specified. - Messages sent to self number will be sent as normal Signal messages again, to
send a sync message, use the new
--note-to-self
flag - Ignore messages with group context sent by non group member
- Profile key is sent along with all direct messages
- In json output unnecessary fields that are null are now omitted
- Disable registration lock before removing the PIN
- Fix PIN hash version to match the official clients. If you had previously set a PIN you need to set it again to be able to unlock the registration lock later.
- Issue with saving account file after linking
- Implement new registration lock PIN with
setPin
andremovePin
(with KBS) - Include quotes, mentions and reactions in json output (Thanks @Atomic-Bean)
- Retrieve avatars for v2 groups
- Download attachment thumbnail for quoted attachments
- Accept group invitation with
updateGroup -g GROUP_ID
- Decline group invitation with
quitGroup -g GROUP_ID
- Join group via invitation link
joinGroup --uri https://signal.group/#...
- Include group ids for v2 groups in json output
Support for groups of new type/v2
- Sending and receiving
- Updating name, avatar and adding members with
updateGroup
- Quit group and decline invitation with
quitGroup
- In the
listGroups
output v2 groups can be recognized by the longer groupId
Attention: For the new group support to work the native libzkgroup library is required. See https://github.com/AsamK/signal-cli/wiki/Provide-native-lib-for-libsignal for more information.
- Rare NullPointerException when receiving messages
- Show additional message content (view once, remote delete, mention, …) for received messages
--captcha
parameter forregister
command, required for some IP ranges
- Profile keys are now stored separately from contact list
- Receipts from normal and unidentified messages now have the same format in json output
- Issue where some messages were sent with an old counter index
- Fix issue with receiving message reactions
- Fix issue when retrieving profiles
- Workaround issue with libzkgroup on platforms other than linux x86_64
- Minor bug fixes and improvements
- dbus functionality now works on FreeBSD
- signal-cli now requires Java 11
Warning: this version only works on Linux x86_64, will be fixed in 0.6.10
- Switch to hypfvieh dbus-java, which doesn't require a native library anymore (drops requirement of libmatthew-unix-java)
- Bugfixes for messages with uuids
- Add
--expiration
parameter toupdateContact
command to set expiration timer
- Send command now returns the timestamp of the sent message
- DBus daemon: Publish received sync message to SyncMessageReceived signal
- Fix issue with resolving e164/uuid addresses for sessions
- Fix pack key length for sticker upload
- Added listContacts command
- Added block/unblock commands to block contacts and groups
- Added uploadStickerPack command to upload sticker packs (see man page for more details)
- Full support for sending and receiving unidentified sender messages
- Support for message reactions with emojis
- Internal: support recipients with uuids
Supports receiving messages sent with unidentified sender
- Fix rounding error for attachment ids in json output
- Add additional info to json output
- Add commands to update profile name and avatar
- Add command to update contact names
Bug fixes and small improvements
- Fixes sending of group messages
- Added getGroupIds dbus command
- Use "NativePRNG" pseudo random number generator, if available
- Switch default data path:
$XDG_DATA_HOME/signal-cli
($HOME/.local/share/signal-cli
) Existing data paths will continue to work (used as fallback)
- Simple json output
- dbus signal for receiving messages
- Registration lock PIN
- Output quoted message
- new listGroups command
- Support for attachments with file names
- Support for complete contacts sync
- Support for contact verification sync
- DBus interface:
- Get/Set group info
- Get/Set contact info
- fix receiving messages on linked devices
- add unregister command
- Fix linking of new devices
- New commandline paramter for receive: --ignore-attachments
- Updated dependencies
- Add support for group info requests
- Improve closing of file streams
- Support new safety numbers (https://whispersystems.org/blog/safety-number-updates/)
- Add a man page
- Support sending disappearing messages, if the recipient has activated it
- Check if a number is registered on Signal, before adding it to a group
- Prevent sending to groups that the user has quit
- Commands to trust new identity keys (see README)
- Messages from untrusted identities are stored on disk and decrypted when the user trusts the identity
- Timestamps shown in ISO 8601 format
- Fix issue with creating groups
- Lock config file to prevent parallel access by multiple instances of signal-cli
- Improve return codes, always return non-zero code, when sending failed
- Linking to Signal-Desktop and Signal-Android is now possible (Provisioning)
- Added a contact store, mainly for syncing contacts with linked devices (editing not yet possible via cli)
- Avatars for groups and contacts are now stored (new folder "avatars" in the config path)
- Fix running with Oracle JRE 8
- Fix registering
- Fix unicode warning when compiling with non utf8 locale
- Renamed textsecure-cli to signal-cli, following the rename of libtextsecure-java to libsignal-service-java
- The experimental dbus interface was also renamed to org.asamk.Signal
- Upload new prekeys to the server, when there are less than 20 left, prekeys are needed to create new sessions
- Improve dbus service
- New command line argument --config to specify config directory
Added an experimental dbus interface, for sending and receiving messages (The interface is unstable and may change with future releases).
This release works with Java 7 and 8.
Add support for creating/updating groups and sending to them
- Add receive timeout commandline parameter
- Show message group info
First release