tinyhumansai/openhuman · error · anyhow::Error

people_refresh_address_book: {e}

Error message

people_refresh_address_book: {e}

What it means

The address-book refresh (macOS CNContactStore seeding via the contacts path) failed after the TCC permission prompt stage. The chained error usually indicates a denied Contacts permission or a store read failure.

Source

Thrown at src/openhuman/memory/tools/people.rs:384

         seeding contacts and their handles. On macOS this may trigger a \
         Contacts (TCC) permission prompt. Returns counts of seeded / skipped \
         contacts. Only use when the user explicitly asks to import contacts."
    }

    fn parameters_schema(&self) -> serde_json::Value {
        json!({ "type": "object", "properties": {} })
    }

    fn permission_level(&self) -> PermissionLevel {
        PermissionLevel::Execute
    }

    async fn execute(&self, _args: serde_json::Value) -> anyhow::Result<ToolResult> {
        log::debug!("[tool][people] refresh_address_book invoked");
        let guard = people_guard().await?;
        let outcome = rpc::handle_refresh_address_book(guard.as_people().expect("checked"))
            .await
            .map_err(|e| anyhow::anyhow!("people_refresh_address_book: {e}"))?;
        Ok(ToolResult::success(serde_json::to_string(&outcome.value)?))
    }
}

#[cfg(test)]
mod tests {
    use super::*;
    use crate::openhuman::tools::traits::ToolScope;

    #[test]
    fn names_and_levels() {
        assert_eq!(PeopleListTool.name(), "people_list");
        assert_eq!(PeopleListTool.permission_level(), PermissionLevel::ReadOnly);
        assert_eq!(PeopleResolveTool.permission_level(), PermissionLevel::Write);
        assert_eq!(
            PeopleRecordInteractionTool.permission_level(),
            PermissionLevel::Write
        );

View on GitHub (pinned to 7491200858)

Solutions

  1. Grant Contacts access when macOS prompts (System Settings > Privacy)
  2. Retry after permission is granted
  3. Check the contacts feature is enabled on this platform
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at src/openhuman/memory/tools/people.rs:384 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/ea5a501903d2527b. Report an issue: GitHub.