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

  1. Provide a non-empty credential name when creating/updating
  2. 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.