claude_agent/auth/
provider.rs

1//! Credential provider trait.
2
3use async_trait::async_trait;
4
5use super::Credential;
6use crate::{Error, Result};
7
8/// Trait for resolving credentials from various sources.
9#[async_trait]
10pub trait CredentialProvider: Send + Sync {
11    /// Provider name for debugging.
12    fn name(&self) -> &str;
13
14    /// Resolve credential from this provider.
15    async fn resolve(&self) -> Result<Credential>;
16
17    /// Refresh expired credentials.
18    async fn refresh(&self) -> Result<Credential> {
19        Err(Error::auth("Refresh not supported"))
20    }
21
22    /// Whether this provider supports credential refresh.
23    fn supports_refresh(&self) -> bool {
24        false
25    }
26}