The signal-cli is being used a primary device. After that when trying to add another deskto device. In this case Signal Desktop 8.23.0 production (Apple silicon)
QR_CODE_FROM_SIGNAL_DESKTOP is the value I obtain from the Desktop App and it starts with sgnl:// It was URL encoded. So I have tried addDevice with both encoded and non encoded version.
signal-cli -a <phonenumber> addDevice --uri <QR_CODE_FROM_SIGNAL_DESKTOP>
And I just get Error: 404 - Add device link failed org.signal.network.exceptions.NonSuccessfulResponseCodeException
Did signal change server? Or is this function currently not working in signal-cli ?
Below are the errors when ran with -v options.
Error log:
2026-08-19T16:41:54.036+0200 [main] DEBUG org.asamk.signal.util.IOUtils - XDG_RUNTIME_DIR not set, falling back to temp dir 2026-08-19T16:41:54.037+0200 [main] DEBUG org.asamk.signal.App - Starting signal-cli 0.14.7 2026-08-19T16:41:54.284+0200 [main] DEBUG org.asamk.signal.util.IOUtils - XDG_DATA_HOME not set, falling back to home dir 2026-08-19T16:41:54.292+0200 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting... 2026-08-19T16:41:54.363+0200 [main] INFO com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Added connection org.sqlite.jdbc4.JDBC4Connection@50380ce7 2026-08-19T16:41:54.364+0200 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed. 2026-08-19T16:41:54.385+0200 [main] INFO LibSignalService - [LibSignalChatConnection]: [normal:1108951836] Connecting... 2026-08-19T16:41:54.388+0200 [main] INFO LibSignalService - [LibSignalChatConnection]: [sendRequest] Enqueuing request send for after connection 2026-08-19T16:41:54.779+0200 [System-3] INFO LibSignalService - [LibSignalChatConnection]: [normal:1108951836] Connected 2026-08-19T16:41:54.780+0200 [System-6] INFO LibSignalService - [LibSignalChatConnection]: [normal:1108951836] queue empty 2026-08-19T16:41:55.196+0200 [main] DEBUG o.a.s.manager.internal.JobExecutor - Running RefreshRecipientsJob job 2026-08-19T16:41:55.197+0200 [virtual-55] DEBUG o.a.s.manager.helper.RecipientHelper - No new numbers to query. 2026-08-19T16:41:55.197+0200 [virtual-55] DEBUG o.a.s.m.s.recipients.RecipientStore - Marking 0 numbers as undiscoverable 2026-08-19T16:41:55.197+0200 [virtual-55] DEBUG o.a.s.m.s.recipients.RecipientStore - Marking 0 numbers as discoverable 2026-08-19T16:41:55.615+0200 [main] ERROR o.a.signal.commands.AddDeviceCommand - Add device link failed: [404] 2026-08-19T16:41:55.615+0200 [main] INFO LibSignalService - [LibSignalChatConnection]: [normal:1108951836] Disconnecting... 2026-08-19T16:41:55.616+0200 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown initiated... 2026-08-19T16:41:55.616+0200 [System-14] INFO LibSignalService - [LibSignalChatConnection]: [normal:1108951836] disconnected 2026-08-19T16:41:55.616+0200 [System-14] INFO LibSignalService - [LibSignalChatConnection]: [normal:1108951836] [cleanup] 2026-08-19T16:41:55.617+0200 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown completed. Add device link failed org.signal.network.exceptions.NonSuccessfulResponseCodeException: [404] at org.signal.network.NetworkResult$WebSocketResponseConverter.toStatusCodeError(NetworkResult.kt:438) at org.signal.network.NetworkResult$DefaultWebSocketConverter.toStatusCodeError(NetworkResult.kt:450) at org.signal.network.NetworkResult$DefaultWebSocketConverter.convert(NetworkResult.kt:453) at org.signal.network.NetworkResult$Companion$fromWebSocket$result$1.apply-IoAF18A(NetworkResult.kt:83) at org.signal.network.NetworkResult$Companion$fromWebSocket$result$1.apply(NetworkResult.kt:83) at io.reactivex.rxjava3.internal.operators.single.SingleMap$MapSingleObserver.onSuccess(SingleMap.java:58) at io.reactivex.rxjava3.internal.operators.single.SingleObserveOn$ObserveOnSingleObserver.run(SingleObserveOn.java:81) at io.reactivex.rxjava3.core.Scheduler$DisposeTask.run(Scheduler.java:644) at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:80) at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:71) at java.base@25.0.4/java.util.concurrent.FutureTask.run(FutureTask.java:328) at java.base@25.0.4/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:309) at java.base@25.0.4/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090) at java.base@25.0.4/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614) at java.base@25.0.4/java.lang.Thread.run(Thread.java:1474)
The
signal-cliis being used a primary device. After that when trying to add another deskto device. In this case Signal Desktop 8.23.0 production (Apple silicon)QR_CODE_FROM_SIGNAL_DESKTOPis the value I obtain from the Desktop App and it starts withsgnl://It was URL encoded. So I have tried addDevice with both encoded and non encoded version.signal-cli -a <phonenumber> addDevice --uri <QR_CODE_FROM_SIGNAL_DESKTOP>And I just get
Error: 404 - Add device link failed org.signal.network.exceptions.NonSuccessfulResponseCodeExceptionDid signal change server? Or is this function currently not working in
signal-cli?Below are the errors when ran with
-voptions.Error log:
2026-08-19T16:41:54.036+0200 [main] DEBUG org.asamk.signal.util.IOUtils - XDG_RUNTIME_DIR not set, falling back to temp dir 2026-08-19T16:41:54.037+0200 [main] DEBUG org.asamk.signal.App - Starting signal-cli 0.14.7 2026-08-19T16:41:54.284+0200 [main] DEBUG org.asamk.signal.util.IOUtils - XDG_DATA_HOME not set, falling back to home dir 2026-08-19T16:41:54.292+0200 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting... 2026-08-19T16:41:54.363+0200 [main] INFO com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Added connection org.sqlite.jdbc4.JDBC4Connection@50380ce7 2026-08-19T16:41:54.364+0200 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed. 2026-08-19T16:41:54.385+0200 [main] INFO LibSignalService - [LibSignalChatConnection]: [normal:1108951836] Connecting... 2026-08-19T16:41:54.388+0200 [main] INFO LibSignalService - [LibSignalChatConnection]: [sendRequest] Enqueuing request send for after connection 2026-08-19T16:41:54.779+0200 [System-3] INFO LibSignalService - [LibSignalChatConnection]: [normal:1108951836] Connected 2026-08-19T16:41:54.780+0200 [System-6] INFO LibSignalService - [LibSignalChatConnection]: [normal:1108951836] queue empty 2026-08-19T16:41:55.196+0200 [main] DEBUG o.a.s.manager.internal.JobExecutor - Running RefreshRecipientsJob job 2026-08-19T16:41:55.197+0200 [virtual-55] DEBUG o.a.s.manager.helper.RecipientHelper - No new numbers to query. 2026-08-19T16:41:55.197+0200 [virtual-55] DEBUG o.a.s.m.s.recipients.RecipientStore - Marking 0 numbers as undiscoverable 2026-08-19T16:41:55.197+0200 [virtual-55] DEBUG o.a.s.m.s.recipients.RecipientStore - Marking 0 numbers as discoverable 2026-08-19T16:41:55.615+0200 [main] ERROR o.a.signal.commands.AddDeviceCommand - Add device link failed: [404] 2026-08-19T16:41:55.615+0200 [main] INFO LibSignalService - [LibSignalChatConnection]: [normal:1108951836] Disconnecting... 2026-08-19T16:41:55.616+0200 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown initiated... 2026-08-19T16:41:55.616+0200 [System-14] INFO LibSignalService - [LibSignalChatConnection]: [normal:1108951836] disconnected 2026-08-19T16:41:55.616+0200 [System-14] INFO LibSignalService - [LibSignalChatConnection]: [normal:1108951836] [cleanup] 2026-08-19T16:41:55.617+0200 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown completed. Add device link failed org.signal.network.exceptions.NonSuccessfulResponseCodeException: [404] at org.signal.network.NetworkResult$WebSocketResponseConverter.toStatusCodeError(NetworkResult.kt:438) at org.signal.network.NetworkResult$DefaultWebSocketConverter.toStatusCodeError(NetworkResult.kt:450) at org.signal.network.NetworkResult$DefaultWebSocketConverter.convert(NetworkResult.kt:453) at org.signal.network.NetworkResult$Companion$fromWebSocket$result$1.apply-IoAF18A(NetworkResult.kt:83) at org.signal.network.NetworkResult$Companion$fromWebSocket$result$1.apply(NetworkResult.kt:83) at io.reactivex.rxjava3.internal.operators.single.SingleMap$MapSingleObserver.onSuccess(SingleMap.java:58) at io.reactivex.rxjava3.internal.operators.single.SingleObserveOn$ObserveOnSingleObserver.run(SingleObserveOn.java:81) at io.reactivex.rxjava3.core.Scheduler$DisposeTask.run(Scheduler.java:644) at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:80) at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:71) at java.base@25.0.4/java.util.concurrent.FutureTask.run(FutureTask.java:328) at java.base@25.0.4/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:309) at java.base@25.0.4/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090) at java.base@25.0.4/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614) at java.base@25.0.4/java.lang.Thread.run(Thread.java:1474)