openclaw - 💡(How to fix) Fix [Bug]: Matrix cannot be recovered using the recovery key. [1 comments, 2 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#73480Fetched 2026-04-29 06:19:19
View on GitHub
Comments
1
Participants
2
Timeline
3
Reactions
0
Author
Timeline (top)
labeled ×2commented ×1

The error log is as follows:

command: printf '%s\n' "$MATRIX_RECOVERY_KEY_[REDACTED_ACCOUNT]" | openclaw matrix verify device --recovery-key-stdin --account [REDACTED_ACCOUNT]

🦞 OpenClaw 2026.4.26 (unknown)  — iMessage green bubble energy, but for everyone.

Account: [REDACTED_ACCOUNT]
Verification failed: Matrix recovery key was applied, but this device still lacks full Matrix identity trust. The recovery key can unlock usable backup material only when 'Backup usable' is yes; full identity trust still requires Matrix cross-signing verification.
User: @[REDACTED_USER]:[REDACTED_DOMAIN]
Device: [REDACTED_DEVICE_ID]
Recovery key accepted: no
Backup usable: yes
Device verified by owner: no
Backup: active and trusted on this device
Backup version: [REDACTED_VERSION_NUM]
Next steps:
- Run the shown printf pipeline with the Matrix recovery key env var for this account: printf '%s\n' "$MATRIX_RECOVERY_KEY_[REDACTED_ACCOUNT]" | openclaw matrix verify device --recovery-key-stdin --account [REDACTED_ACCOUNT]. If you do not have the recovery key but still have another verified Matrix client, run openclaw matrix verify self --account [REDACTED_ACCOUNT] instead.

command: openclaw matrix encryption setup



🦞 OpenClaw 2026.4.26 (unknown) — Hot reload for config, cold sweat for deploys.

Account: [REDACTED_ACCOUNT]
Encryption config: already enabled at channels.matrix.accounts.[REDACTED_ACCOUNT]
Bootstrap success: no
Bootstrap error: MatrixError: [400] One time key signed_curve25519:[REDACTED_OTK_ID] already exists. Old key: {"key":"[REDACTED_OLD_CURVE25519_KEY]","signatures":{"@[REDACTED_USER]:[REDACTED_DOMAIN]":{"ed25519:[REDACTED_DEVICE_ID]":"[REDACTED_OLD_SIGNATURE]"}}}; new key: {'key': '[REDACTED_NEW_CURVE25519_KEY]', 'signatures': {'@[REDACTED_USER]:[REDACTED_DOMAIN]': {'ed25519:[REDACTED_DEVICE_ID]': '[REDACTED_NEW_SIGNATURE]'}}} (http://[REDACTED_INTERNAL_SERVER]:[REDACTED_PORT]/_matrix/client/v3/keys/upload)
Verified by owner: no
Backup: present but backup key unavailable on this device
Backup version: [REDACTED_VERSION_NUM]
Next steps:
- Run the shown printf pipeline with the Matrix recovery key env var for this account: printf '%s\n' "$MATRIX_RECOVERY_KEY_[REDACTED_ACCOUNT]" | openclaw matrix verify device --recovery-key-stdin --account [REDACTED_ACCOUNT]. If you do not have the recovery key but still have another verified Matrix client, run openclaw matrix verify self --account [REDACTED_ACCOUNT] instead.
- Backup key is not loaded on this device. Run openclaw matrix verify backup restore --account [REDACTED_ACCOUNT] to load it and restore old room keys. If restore still cannot load the key, run the shown printf pipeline with the Matrix recovery key env var for this account: printf '%s\n' "$MATRIX_RECOVERY_KEY_[REDACTED_ACCOUNT]" | openclaw matrix verify backup restore --recovery-key-stdin --account [REDACTED_ACCOUNT].

Error Message

🦞 OpenClaw 2026.4.26 (unknown) — Hot reload for config, cold sweat for deploys.

Account: [REDACTED_ACCOUNT] Encryption config: already enabled at channels.matrix.accounts.[REDACTED_ACCOUNT] Bootstrap success: no Bootstrap error: MatrixError: [400] One time key signed_curve25519:[REDACTED_OTK_ID] already exists. Old key: {"key":"[REDACTED_OLD_CURVE25519_KEY]","signatures":{"@[REDACTED_USER]:[REDACTED_DOMAIN]":{"ed25519:[REDACTED_DEVICE_ID]":"[REDACTED_OLD_SIGNATURE]"}}}; new key: {'key': '[REDACTED_NEW_CURVE25519_KEY]', 'signatures': {'@[REDACTED_USER]:[REDACTED_DOMAIN]': {'ed25519:[REDACTED_DEVICE_ID]': '[REDACTED_NEW_SIGNATURE]'}}} (http://[REDACTED_INTERNAL_SERVER]:[REDACTED_PORT]/_matrix/client/v3/keys/upload) Verified by owner: no Backup: present but backup key unavailable on this device Backup version: [REDACTED_VERSION_NUM] Next steps:

  • Run the shown printf pipeline with the Matrix recovery key env var for this account: printf '%s\n' "$MATRIX_RECOVERY_KEY_[REDACTED_ACCOUNT]" | openclaw matrix verify device --recovery-key-stdin --account [REDACTED_ACCOUNT]. If you do not have the recovery key but still have another verified Matrix client, run openclaw matrix verify self --account [REDACTED_ACCOUNT] instead.
  • Backup key is not loaded on this device. Run openclaw matrix verify backup restore --account [REDACTED_ACCOUNT] to load it and restore old room keys. If restore still cannot load the key, run the shown printf pipeline with the Matrix recovery key env var for this account: printf '%s\n' "$MATRIX_RECOVERY_KEY_[REDACTED_ACCOUNT]" | openclaw matrix verify backup restore --recovery-key-stdin --account [REDACTED_ACCOUNT].

Root Cause

The error log is as follows:

command: printf '%s\n' "$MATRIX_RECOVERY_KEY_[REDACTED_ACCOUNT]" | openclaw matrix verify device --recovery-key-stdin --account [REDACTED_ACCOUNT]

🦞 OpenClaw 2026.4.26 (unknown)  — iMessage green bubble energy, but for everyone.

Account: [REDACTED_ACCOUNT]
Verification failed: Matrix recovery key was applied, but this device still lacks full Matrix identity trust. The recovery key can unlock usable backup material only when 'Backup usable' is yes; full identity trust still requires Matrix cross-signing verification.
User: @[REDACTED_USER]:[REDACTED_DOMAIN]
Device: [REDACTED_DEVICE_ID]
Recovery key accepted: no
Backup usable: yes
Device verified by owner: no
Backup: active and trusted on this device
Backup version: [REDACTED_VERSION_NUM]
Next steps:
- Run the shown printf pipeline with the Matrix recovery key env var for this account: printf '%s\n' "$MATRIX_RECOVERY_KEY_[REDACTED_ACCOUNT]" | openclaw matrix verify device --recovery-key-stdin --account [REDACTED_ACCOUNT]. If you do not have the recovery key but still have another verified Matrix client, run openclaw matrix verify self --account [REDACTED_ACCOUNT] instead.

command: openclaw matrix encryption setup



🦞 OpenClaw 2026.4.26 (unknown) — Hot reload for config, cold sweat for deploys.

Account: [REDACTED_ACCOUNT]
Encryption config: already enabled at channels.matrix.accounts.[REDACTED_ACCOUNT]
Bootstrap success: no
Bootstrap error: MatrixError: [400] One time key signed_curve25519:[REDACTED_OTK_ID] already exists. Old key: {"key":"[REDACTED_OLD_CURVE25519_KEY]","signatures":{"@[REDACTED_USER]:[REDACTED_DOMAIN]":{"ed25519:[REDACTED_DEVICE_ID]":"[REDACTED_OLD_SIGNATURE]"}}}; new key: {'key': '[REDACTED_NEW_CURVE25519_KEY]', 'signatures': {'@[REDACTED_USER]:[REDACTED_DOMAIN]': {'ed25519:[REDACTED_DEVICE_ID]': '[REDACTED_NEW_SIGNATURE]'}}} (http://[REDACTED_INTERNAL_SERVER]:[REDACTED_PORT]/_matrix/client/v3/keys/upload)
Verified by owner: no
Backup: present but backup key unavailable on this device
Backup version: [REDACTED_VERSION_NUM]
Next steps:
- Run the shown printf pipeline with the Matrix recovery key env var for this account: printf '%s\n' "$MATRIX_RECOVERY_KEY_[REDACTED_ACCOUNT]" | openclaw matrix verify device --recovery-key-stdin --account [REDACTED_ACCOUNT]. If you do not have the recovery key but still have another verified Matrix client, run openclaw matrix verify self --account [REDACTED_ACCOUNT] instead.
- Backup key is not loaded on this device. Run openclaw matrix verify backup restore --account [REDACTED_ACCOUNT] to load it and restore old room keys. If restore still cannot load the key, run the shown printf pipeline with the Matrix recovery key env var for this account: printf '%s\n' "$MATRIX_RECOVERY_KEY_[REDACTED_ACCOUNT]" | openclaw matrix verify backup restore --recovery-key-stdin --account [REDACTED_ACCOUNT].

Code Example

🦞 OpenClaw 2026.4.26 (unknown)  — iMessage green bubble energy, but for everyone.

Account: [REDACTED_ACCOUNT]
Verification failed: Matrix recovery key was applied, but this device still lacks full Matrix identity trust. The recovery key can unlock usable backup material only when 'Backup usable' is yes; full identity trust still requires Matrix cross-signing verification.
User: @[REDACTED_USER]:[REDACTED_DOMAIN]
Device: [REDACTED_DEVICE_ID]
Recovery key accepted: no
Backup usable: yes
Device verified by owner: no
Backup: active and trusted on this device
Backup version: [REDACTED_VERSION_NUM]
Next steps:
- Run the shown printf pipeline with the Matrix recovery key env var for this account: printf '%s\n' "$MATRIX_RECOVERY_KEY_[REDACTED_ACCOUNT]" | openclaw matrix verify device --recovery-key-stdin --account [REDACTED_ACCOUNT]. If you do not have the recovery key but still have another verified Matrix client, run openclaw matrix verify self --account [REDACTED_ACCOUNT] instead.

---

🦞 OpenClaw 2026.4.26 (unknown)Hot reload for config, cold sweat for deploys.

Account: [REDACTED_ACCOUNT]
Encryption config: already enabled at channels.matrix.accounts.[REDACTED_ACCOUNT]
Bootstrap success: no
Bootstrap error: MatrixError: [400] One time key signed_curve25519:[REDACTED_OTK_ID] already exists. Old key: {"key":"[REDACTED_OLD_CURVE25519_KEY]","signatures":{"@[REDACTED_USER]:[REDACTED_DOMAIN]":{"ed25519:[REDACTED_DEVICE_ID]":"[REDACTED_OLD_SIGNATURE]"}}}; new key: {'key': '[REDACTED_NEW_CURVE25519_KEY]', 'signatures': {'@[REDACTED_USER]:[REDACTED_DOMAIN]': {'ed25519:[REDACTED_DEVICE_ID]': '[REDACTED_NEW_SIGNATURE]'}}} (http://[REDACTED_INTERNAL_SERVER]:[REDACTED_PORT]/_matrix/client/v3/keys/upload)
Verified by owner: no
Backup: present but backup key unavailable on this device
Backup version: [REDACTED_VERSION_NUM]
Next steps:
- Run the shown printf pipeline with the Matrix recovery key env var for this account: printf '%s\n' "$MATRIX_RECOVERY_KEY_[REDACTED_ACCOUNT]" | openclaw matrix verify device --recovery-key-stdin --account [REDACTED_ACCOUNT]. If you do not have the recovery key but still have another verified Matrix client, run openclaw matrix verify self --account [REDACTED_ACCOUNT] instead.
- Backup key is not loaded on this device. Run openclaw matrix verify backup restore --account [REDACTED_ACCOUNT] to load it and restore old room keys. If restore still cannot load the key, run the shown printf pipeline with the Matrix recovery key env var for this account: printf '%s\n' "$MATRIX_RECOVERY_KEY_[REDACTED_ACCOUNT]" | openclaw matrix verify backup restore --recovery-key-stdin --account [REDACTED_ACCOUNT].

---
RAW_BUFFERClick to expand / collapse

Bug type

Regression (worked before, now fails)

Beta release blocker

No

Summary

The error log is as follows:

command: printf '%s\n' "$MATRIX_RECOVERY_KEY_[REDACTED_ACCOUNT]" | openclaw matrix verify device --recovery-key-stdin --account [REDACTED_ACCOUNT]

🦞 OpenClaw 2026.4.26 (unknown)  — iMessage green bubble energy, but for everyone.

Account: [REDACTED_ACCOUNT]
Verification failed: Matrix recovery key was applied, but this device still lacks full Matrix identity trust. The recovery key can unlock usable backup material only when 'Backup usable' is yes; full identity trust still requires Matrix cross-signing verification.
User: @[REDACTED_USER]:[REDACTED_DOMAIN]
Device: [REDACTED_DEVICE_ID]
Recovery key accepted: no
Backup usable: yes
Device verified by owner: no
Backup: active and trusted on this device
Backup version: [REDACTED_VERSION_NUM]
Next steps:
- Run the shown printf pipeline with the Matrix recovery key env var for this account: printf '%s\n' "$MATRIX_RECOVERY_KEY_[REDACTED_ACCOUNT]" | openclaw matrix verify device --recovery-key-stdin --account [REDACTED_ACCOUNT]. If you do not have the recovery key but still have another verified Matrix client, run openclaw matrix verify self --account [REDACTED_ACCOUNT] instead.

command: openclaw matrix encryption setup



🦞 OpenClaw 2026.4.26 (unknown) — Hot reload for config, cold sweat for deploys.

Account: [REDACTED_ACCOUNT]
Encryption config: already enabled at channels.matrix.accounts.[REDACTED_ACCOUNT]
Bootstrap success: no
Bootstrap error: MatrixError: [400] One time key signed_curve25519:[REDACTED_OTK_ID] already exists. Old key: {"key":"[REDACTED_OLD_CURVE25519_KEY]","signatures":{"@[REDACTED_USER]:[REDACTED_DOMAIN]":{"ed25519:[REDACTED_DEVICE_ID]":"[REDACTED_OLD_SIGNATURE]"}}}; new key: {'key': '[REDACTED_NEW_CURVE25519_KEY]', 'signatures': {'@[REDACTED_USER]:[REDACTED_DOMAIN]': {'ed25519:[REDACTED_DEVICE_ID]': '[REDACTED_NEW_SIGNATURE]'}}} (http://[REDACTED_INTERNAL_SERVER]:[REDACTED_PORT]/_matrix/client/v3/keys/upload)
Verified by owner: no
Backup: present but backup key unavailable on this device
Backup version: [REDACTED_VERSION_NUM]
Next steps:
- Run the shown printf pipeline with the Matrix recovery key env var for this account: printf '%s\n' "$MATRIX_RECOVERY_KEY_[REDACTED_ACCOUNT]" | openclaw matrix verify device --recovery-key-stdin --account [REDACTED_ACCOUNT]. If you do not have the recovery key but still have another verified Matrix client, run openclaw matrix verify self --account [REDACTED_ACCOUNT] instead.
- Backup key is not loaded on this device. Run openclaw matrix verify backup restore --account [REDACTED_ACCOUNT] to load it and restore old room keys. If restore still cannot load the key, run the shown printf pipeline with the Matrix recovery key env var for this account: printf '%s\n' "$MATRIX_RECOVERY_KEY_[REDACTED_ACCOUNT]" | openclaw matrix verify backup restore --recovery-key-stdin --account [REDACTED_ACCOUNT].

Steps to reproduce

As described above

Expected behavior

As described above

Actual behavior

As described above

OpenClaw version

2026.4.26

Operating system

Windows 11

Install method

docker

Model

minimax

Provider / routing chain

openclaw->cloudflare-ai-gateway->minimax

Additional provider/model setup details

No response

Logs, screenshots, and evidence

Impact and severity

No response

Additional information

No response

extent analysis

TL;DR

The issue can be resolved by running the openclaw matrix verify device and openclaw matrix verify backup restore commands with the Matrix recovery key to establish full Matrix identity trust and load the backup key.

Guidance

  • The error message indicates that the device lacks full Matrix identity trust, which requires Matrix cross-signing verification.
  • Run printf '%s\n' "$MATRIX_RECOVERY_KEY_[REDACTED_ACCOUNT]" | openclaw matrix verify device --recovery-key-stdin --account [REDACTED_ACCOUNT] to apply the recovery key and verify the device.
  • Run openclaw matrix verify backup restore --account [REDACTED_ACCOUNT] to load the backup key and restore old room keys.
  • If the restore still cannot load the key, run printf '%s\n' "$MATRIX_RECOVERY_KEY_[REDACTED_ACCOUNT]" | openclaw matrix verify backup restore --recovery-key-stdin --account [REDACTED_ACCOUNT].

Notes

The provided solution assumes that the Matrix recovery key is available and correctly set as an environment variable. If the recovery key is not available, an alternative approach using another verified Matrix client may be necessary.

Recommendation

Apply the workaround by running the specified openclaw commands with the Matrix recovery key to establish full Matrix identity trust and load the backup key. This approach is recommended because it directly addresses the error messages and provides a clear path to resolving the issue.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

FAQ

Expected behavior

As described above

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING