Skip to content

Sending same event with a different name hoses /identifiers endpoint (and wallet) with persistent 500 #414

@daidoji

Description

@daidoji

Version

main, GLEIF-IT/v0.3.0

Environment

Linux, 3.13, bare metal

Expected behavior

When sending the same multisig inception event twice to the /identifiers endpoint but with a different alias either both aliases should be added, the second one should overwrite the first, or the second one should throw an error but the endpoint should still be useable.

Actual behavior

The /identifiers endpoint permanently returns 500 - Internal Server error to all requests.

E           assert 500 == 200
E            +  where 500 = Result<500 Internal Server Error application/json b'{"title": "500 Internal Server Error"}'>.status_code

tests/app/test_aiding.py:2749: AssertionError
--------------------------------------------------------------- Captured stderr call ---------------------------------------------------------------
2026-02-03 15:36:18 [FALCON] [ERROR] POST /identifiers/aid1/events => Traceback (most recent call last):
  File "falcon/app.py", line 440, in falcon.app.App.__call__
  File "/home/daidoji/ssi/keria/src/keria/app/aiding.py", line 1039, in on_post
    op = self.rotate(agent, name, body)
  File "/home/daidoji/ssi/keria/src/keria/app/aiding.py", line 1103, in rotate
    keeper.rotate(pre=serder.pre, **salt)
    ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: SaltyManager.rotate() missing 2 required positional arguments: 'kidx' and 'transferable'

2026-02-03 15:36:18 [FALCON] [ERROR] GET /identifiers => Traceback (most recent call last):
  File "falcon/app.py", line 440, in falcon.app.App.__call__
  File "/home/daidoji/ssi/keria/src/keria/app/aiding.py", line 595, in on_get
    hab = agent.hby.habs[pre]
          ~~~~~~~~~~~~~~^^^^^
KeyError: 'EGOSjnzaVz4nZ55wk3-SV78WgdaTJZddhom9ZLeNFEd3'

============================================================= short test summary info ==============================================================
FAILED tests/app/test_aiding.py::test_renaming_after_incepting_hoses_wallet - assert 500 == 200

Steps to reproduce

I have modified one of the tests in keria that demonstrates the behavior. https://github.com/provenant-dev/keria/blob/bug/renaming-after-incepting-gives-persistent-500/tests/app/test_aiding.py#L2741 this test on this branch fails with the 500 on the second (and all subsequent) GET requests. Unclear how to recover a wallet where this has occurred.

HAR file (mangled so could upload to github) from a test in provenant-dev env to see actual workflow where we first discovered this.

join_inception_twice.har.log

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions