ory/kratos · error

message ID is used more than once

Error message

message ID %s is used more than once: %s %s

What it means

After sorting all message constants from text/id.go by their ID value, validateAllMessages found two adjacent entries with the identical ID. Two distinct message constants share one identifier, which would make error messages ambiguous in generated documentation.

Solutions

  1. Give each of the two named constants its own unique ID value in text/id.go
  2. Use the generator's normal creation flow for new messages so IDs are assigned freshly
  3. Re-run the doc generation to verify no duplicates remain
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at cmd/clidoc/main.go:409 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of ory/kratos@b86338da04 (2026-09-07). Data as JSON: /api/errors/dc05e4073b348f23. Report an issue: GitHub.

Appendix: source

Thrown at cmd/clidoc/main.go:409

									usedIDs = append(usedIDs, message{
										ID:   c.(*types.Const).Val().ExactString(),
										Name: name.Name,
									})
								}
							}
						}
					}
				}
			}
		}
	}

	sort.Slice(usedIDs, func(i, j int) bool {
		return usedIDs[i].ID < usedIDs[j].ID
	})
	for i := 1; i < len(usedIDs); i++ {
		if usedIDs[i].ID == usedIDs[i-1].ID {
			return errors.Errorf("message ID %s is used more than once: %s %s", usedIDs[i].ID, usedIDs[i].Name, usedIDs[i-1].Name)
		}
	}

	return nil
}

func generateElements(messageFilePath string) error {
	// If the file at messageFilePath does not exist, create it
	f, err := os.OpenFile(messageFilePath, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0o644) // #nosec
	if err != nil {
		return errors.Wrapf(err, "unable to open or create message file at %s", messageFilePath)
	}
	if err := f.Close(); err != nil {
		return errors.Wrapf(err, "unable to close message file at %s", messageFilePath)
	}

	sortedMessages := sortMessages()
	if err := writeMessagesJson(messageFilePath, sortedMessages); err != nil {

View on GitHub (pinned to b86338da04)