Skip to main content

concinno-skills-auth

Unified credential, OAuth device-flow, and rotation skills for Concinno. One vault for all 20+ concinno-skills-* sub-packages. Local-machine Fernet-encrypted vault with OS-keyring master key + file fallback.

Status

MVP (0.1.0) — three tools:

Tool class Action surface
CredentialAuth list / get / set / delete / providers
OAuthFlow initiate / complete / one_shot (RFC 8628 device-code grant)
SecretRotate rotate / rotate_all / revoke

Ships OAuth device-code endpoints for GitHub, Google, Microsoft, and a generic custom slot for any RFC 8628–compatible provider. Slack does not support device flow — use CredentialAuth.set with a xoxb-... bot token instead.

Twenty other providers are registered as static-token stores: anthropic / aws / azure / chroma / cohere / gcp / hubspot / intercom / mailchimp / notion / openai / pinecone / salesforce / sendgrid / shopify / stripe / twilio / typeform / weaviate / zendesk.

Install

pip install concinno-skills-auth

Dependencies: concinno>=2.15.1, cryptography>=42, keyring>=25, httpx>=0.27.

Vault

Location: ~/.concinno/vault/credentials.enc (Fernet-encrypted). Master key in the OS keyring (Windows Credential Locker / macOS Keychain / Linux libsecret), falling back to ~/.concinno/vault/.master-key with 0o600 if no keyring backend is available.

Per-mutation backup: last 5 ciphertext snapshots under ~/.concinno/vault/backups/.

See src/concinno_skills_auth/SECURITY.md for the threat model and crypto choices.

Usage via Concinno ToolRegistry

import os
os.environ["CONCINNO_LOAD_PLUGINS"] = "1"

from concinno.tools.registry import get_default_registry

reg = get_default_registry()
reg.load_plugins()
assert {"CredentialAuth", "OAuthFlow", "SecretRotate"} <= set(
    reg.list_deferred()
)

Direct Python

from concinno_skills_auth import CredentialAuth, OAuthFlow, SecretRotate

# Store a GitHub personal access token
CredentialAuth().call(
    action="set",
    alias="github-main",
    provider="github",
    type="api_key",
    data={"api_key": "ghp_xxxxxxxxxxxxxxxxxxxx"},
    scopes=["repo", "read:user"],
)

# OAuth device-code flow (GitHub)
OAuthFlow().call(
    action="one_shot",
    provider="github",
    client_id="Iv1.your-oauth-app-id",
    scopes=["repo"],
    alias="github-device",
)

# Rotate
SecretRotate().call(
    action="rotate",
    alias="github-main",
    new_data={"api_key": "ghp_new_value"},
    reason="90-day policy",
)

# Emergency revoke — removes from vault + surfaces provider revoke URL
SecretRotate().call(action="revoke", alias="github-main", reason="token leaked")

All tools return {"ok": True, ...} or a structured payload on success, {"error": "..."} on failure. No exceptions escape call().

Concurrency

All three tools set is_concurrency_safe = False. The vault is file-backed with a cross-platform advisory lock (fcntl POSIX / msvcrt Windows) around read-modify-write; the Concinno scheduler will serialise calls to these tools automatically.

Redaction

CredentialAuth.call(action="get", alias=..., reveal=False) returns a redacted copy — each string in entry["data"] is replaced with <redacted N chars>. Pass reveal=True to get the raw secret.

Skill

The global skill at ~/.claude/skills/credentials/SKILL.md wraps these three tools into a conversational onboarding / rotation / emergency flow. Triggers on phrases like "新 token", "OAuth 流程", "rotate", "revoke". See the skill directory for workflows.md (three concrete flows) and providers.md (per-provider URLs + scopes).

License

Apache-2.0. See LICENSE.

Metadata

Release files for concinno-skills-auth 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for concinno-skills-auth 0.1.0
File Size Uploaded
concinno_skills_auth-0.1.0.tar.gz 52.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for concinno-skills-auth 0.1.0
File Interpreter ABI Platform
concinno_skills_auth-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 78.9 kB

Release files / concinno_skills_auth-0.1.0.tar.gz

Download URL concinno_skills_auth-0.1.0.tar.gz
Size 52.2 kB
Tags Source
SHA-256 checksum
How to use checksums
9bfc693f05f20f53ef7d25749b2b1af42e4b3ba2681967def6cda327b6ca9e20
BLAKE2b-256 checksum
How to use checksums
7adcc05e5b7be3008c2d1f9a8ad4b12b5fd1ed147a3265cccd2d3f735412156c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.9

Release files / concinno_skills_auth-0.1.0-py3-none-any.whl

Download URL concinno_skills_auth-0.1.0-py3-none-any.whl
Size 26.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ea6422d563716917e1c2d7893d37dea454d05c2fbfad8d9cac09c266f56d5239
BLAKE2b-256 checksum
How to use checksums
fd984144b30afedbb3470431f38f4cb0e8b3dc7027debd4356180d7831f1f385
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.9

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page