Skip to content

Inference route API keys stored in plain object store #21

@pimlock

Description

@pimlock

Summary

Inference route API keys are stored in full in the same SQLite or Postgres object store as every other entity. The InferenceRoute protobuf, including spec.api_key, is encoded to bytes and written as the row payload. There is no dedicated secret store, no encryption of sensitive fields at rest, and no redaction when routes are listed or returned. A compromise of the database file, a backup, or any dump of the objects table exposes all inference API keys.

Source Code

  • Route create/update in crates/navigator-server/src/inference.rs persist the full InferenceRoute (including spec.api_key) via store.put_message.
  • The store abstraction in crates/navigator-server/src/persistence/mod.rs implements put_message (lines 126-137) by encoding the message with message.encode_to_vec() and calling put(object_type, id, name, payload). The Postgres and SQLite backends write this payload as a blob with no per-field encryption or secret handling.
  • When listing routes, inference.rs (lines 258-261) decodes each record.payload as InferenceRoute and appends it to the response with no redaction of spec.api_key.

Originally by @drew on 2026-02-19T08:59:02.208-08:00

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions