tinyhumansai/openhuman · error · anyhow::Error
http_cred name cannot be empty
Error message
http_cred name cannot be empty
What it means
An http_cred was passed to `upsert` with an empty name. The name is the credential's lookup key, so an empty string cannot identify it; the guard fires before any encryption-at-rest or store write happens.
Source
Thrown at src/openhuman/security/credentials/http_creds.rs:288
target: "credentials",
"[credentials] http_cred get hit name={key} scheme={}",
scheme.as_str()
);
Ok(Some(HttpCredential {
name: key,
scheme,
header_name: rec.header_name.clone(),
username: rec.username.clone(),
secret,
created_at: parse_dt(&rec.created_at),
updated_at: parse_dt(&rec.updated_at),
}))
}
/// Insert or replace a credential, encrypting its secret at rest.
pub fn upsert(&self, cred: &HttpCredential) -> Result<()> {
let key = Self::normalize_name(&cred.name);
anyhow::ensure!(!key.is_empty(), "http_cred name cannot be empty");
let mut persisted = self.read_persisted()?;
let encrypted = self
.secret_store
.encrypt(&cred.secret)
.context("failed to encrypt http_cred secret")?;
let created_at = persisted
.credentials
.get(&key)
.map(|r| r.created_at.clone())
.unwrap_or_else(|| cred.created_at.to_rfc3339());
persisted.credentials.insert(
key.clone(),
PersistedHttpCredential {
scheme: cred.scheme.as_str().to_string(),
header_name: cred.header_name.clone(),View on GitHub (pinned to 7491200858)
Solutions
- Provide a non-empty credential name when creating/updating
- Trim and validate the name at the call site before upsert
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at src/openhuman/security/credentials/http_creds.rs:288 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17).
Data as JSON: /api/errors/1f2b2fdd14f77ec2.
Report an issue: GitHub.