{"id":51064935,"url":"https://github.com/bitwarden/agent-access","last_synced_at":"2026-07-29T02:01:37.333Z","repository":{"id":340741334,"uuid":"1119310590","full_name":"bitwarden/agent-access","owner":"bitwarden","description":"Agent Access is an open protocol, CLI tool, and SDK to provide agents with credentials without exposing their entire vault","archived":false,"fork":false,"pushed_at":"2026-07-16T18:48:55.000Z","size":25960,"stargazers_count":103,"open_issues_count":18,"forks_count":6,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-07-16T20:22:21.505Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bitwarden.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-19T04:38:57.000Z","updated_at":"2026-07-13T17:53:16.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/bitwarden/agent-access","commit_stats":null,"previous_names":["bitwarden/remote-access","bitwarden/agent-access"],"tags_count":20,"template":false,"template_full_name":"bitwarden/template","purl":"pkg:github/bitwarden/agent-access","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bitwarden%2Fagent-access","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bitwarden%2Fagent-access/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bitwarden%2Fagent-access/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bitwarden%2Fagent-access/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bitwarden","download_url":"https://codeload.github.com/bitwarden/agent-access/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bitwarden%2Fagent-access/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36013746,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-07-29T02:00:04.910Z","response_time":95,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-23T06:00:21.417Z","updated_at":"2026-07-29T02:01:37.322Z","avatar_url":"https://github.com/bitwarden.png","language":"Rust","funding_links":[],"categories":["Compatibility matrix"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"assets/logo-dark.png\"\u003e\n    \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"assets/logo-light.png\"\u003e\n    \u003cimg alt=\"Bitwarden Agent Access\" src=\"assets/logo-light.png\" height=\"120\"\u003e\n  \u003c/picture\u003e\n\u003c/p\u003e\n\n\n# Agent Access\n\nAgent Access allows users to provide credentials from their password manager to remote systems, without exposing their entire vault.\nAgent Access creates an end-to-end encrypted tunnel between a remote system and a credential provider.\n\nAgent Access is an open protocol, CLI tool, and SDK that can be implemented directly into agents or custom software. While Agent Access has been built and developed by the team at Bitwarden, it is open for any credential provider to further support agentic or automation use cases.\n\n\u003e [!IMPORTANT]\n\u003e This project is in an **early preview stage**. APIs and protocols are subject to change. We do not recommend inputting sensitive credentials directly into LLMs or AI agents (any unknown software, really).\n\u003e \n\u003e For LLM's specifically, where possible use environment injection (e.g. `aac run`) to pass secrets to processes without exposing them in recorded context.\n\n\u003cp align=\"center\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"assets/overview-dark.webp\"\u003e\n    \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"assets/overview-light.webp\"\u003e\n    \u003cimg alt=\"Agent Access overview\" src=\"assets/overview-light.webp\" width=\"960\"\u003e\n  \u003c/picture\u003e\n\u003c/p\u003e\n\n## Installation\n\n### macOS (Apple Silicon)\n\n```shell\ncurl -L https://github.com/bitwarden/agent-access/releases/latest/download/aac-macos-aarch64.tar.gz | tar xz\nsudo mv aac /usr/local/bin/ # Makes it available on PATH\n```\n\n### macOS (Intel)\n\n```shell\ncurl -L https://github.com/bitwarden/agent-access/releases/latest/download/aac-macos-x86_64.tar.gz | tar xz\nsudo mv aac /usr/local/bin/ # Makes it available on PATH\n```\n\n### Linux (x86_64)\n\n```shell\ncurl -L https://github.com/bitwarden/agent-access/releases/latest/download/aac-linux-x86_64.tar.gz | tar xz\nsudo mv aac /usr/local/bin/ # Makes it available on PATH\n```\n\n### Windows (x86_64)\n\nDownload [aac-windows-x86_64.zip](https://github.com/bitwarden/agent-access/releases/latest/download/aac-windows-x86_64.zip) from the [latest release](https://github.com/bitwarden/agent-access/releases/latest) and extract it to a directory on your PATH.\n\n### OpenClaw skill\n\n```shell\ncurl -fsSL \"https://raw.githubusercontent.com/bitwarden/agent-access/main/examples/skills/agent-access/SKILL.md\" -o ~/.openclaw/skills/agent-access/SKILL.md --create-dirs\n```\n\n## Examples\n\n* [OpenClaw skill](examples/skills/agent-access/SKILL.md)\n* [Fetch credential via `aac connect`](examples/shell/get-credential.sh) — parse JSON output with `jq` and pipe to `docker login`\n* [Connect to PostgreSQL via `aac run`](examples/shell/psql-connect.sh) — inject `PGUSER`/`PGPASSWORD` as env vars directly into `psql`\n* [Github Action](examples/github-action/)\n\n### Use from your code\n\nUse Agent Access directly from your code by referencing the Rust SDK. See the full examples:\n\n* [Python (UniFFI bindings)](examples/python-uniffi/) — connect and request credentials from Python\n* [JavaScript/WASM](examples/js-wasm/) — browser-based client using WebAssembly bindings\n* [Rust remote client](examples/rust-remote/) — minimal Rust example using `RemoteClient`\n\nHere's a quick Python example:\n\n```python\nfrom agent_access import RemoteClient\n\nclient = RemoteClient(\"python-remote\")\nclient.connect(token=\"ABC-DEF-GHI\")\ncred = client.request_credential(\"example.com\")\nprint(cred.username, cred.password)\nclient.close()\n```\n\n## Getting started (Bitwarden CLI)\n\nIn this short guide we'll walk you through setting up Agent Access on your local machine and connect it to the Bitwarden CLI.\n\n**Prerequisites**\n\n- [Bitwarden CLI](https://bitwarden.com/help/cli/) (`bw`) installed and available on your PATH\n\n**Enabling Agent Access for Bitwarden**\n\nThe `aac` CLI tool has built-in support for connecting to the Bitwarden CLI. The interactive CLI can be used to unlock your vault (`/unlock`) and create a pairing token that the remote side can use to connect.\n\n```shell\naac listen\n```\n\nIf you don't have the `bw` CLI installed, you can use the built-in example credential provider (has credentials for example.com):\n\n```shell\naac listen --provider example\n```\n\nThe interactive CLI will create a pairing token that you can use to establish a connection on the remote side.\n\n**Setting up the remote side**\n\nYou can run the remote side interactively (Useful for testing/demonstration) or without interactivity which is useful for agents and automation.\n\n```shell\n# interactive mode\naac connect\n```\n\n```shell\n# Pairing (without interactivity)\naac connect --token \u003cpairing-token\u003e --output json\n\n# Fetching credentials (without interactivity)\naac connect --domain example.com --output json\naac connect --domain github.com --provider bitwarden --output json\n\n# Pair + Fetch in one command (without interactivity)\naac connect --token \u003cpairing-token\u003e --domain example.com --output json\n\n# Fetch by vault item ID instead of domain\naac connect --id \u003cvault-item-id\u003e --output json\n\n# Output:\n{\"credential\":{\"notes\":null,\"password\":\"alligator5\",\"totp\":null,\"uri\":\"https://github.com\",\"username\":\"example\"},\"domain\":\"github.com\",\"success\":true}\n\n```\n\n### Fetching by ID\n\nYou can use `--id` instead of `--domain` to fetch a specific vault item by its unique identifier. This is useful when multiple items share the same domain, or when you know the exact item you need.\n\n```shell\naac connect --id \u003cvault-item-id\u003e --output json\n```\n\nThe `--id` and `--domain` flags are mutually exclusive — use one or the other.\n\n### Running commands with credentials\n\nThe `run` subcommand fetches a credential and injects it as environment variables into a child process. Secrets never touch stdout or disk — they're passed exclusively through the child process's environment.\n\n```shell\n# Map specific credential fields to env vars\naac run --domain example.com --env DB_PASSWORD=password --env DB_USER=username -- psql\n\n# Inject all fields with AAC_ prefix (AAC_USERNAME, AAC_PASSWORD, etc.)\naac run --domain example.com --env-all -- deploy.sh\n\n# Combine defaults with custom overrides\naac run --domain example.com --env-all --env CUSTOM_PW=password -- deploy.sh\n\n# Use --id instead of --domain\naac run --id \u003cvault-item-id\u003e --env-all -- deploy.sh\n```\n\n**Available credential fields:** `username`, `password`, `totp`, `uri`, `notes`, `domain`, `credential_id`\n\nWhen using `--env-all`, each field is injected with an `AAC_` prefix (e.g., `AAC_USERNAME`, `AAC_PASSWORD`). Explicit `--env` mappings override `--env-all` defaults. At least one of `--env` or `--env-all` is required.\n\n## Contributing\n\nThis repo contains multiple building blocks that power Agent Access.\n\nIt contains:\n\n* An end-to-end encrypted tunnel, using Noise\n* A Rust SDK for establishing a tunnel, sending requests, and responding to them\n* A CLI tool for requesting / releasing credentials\n* A relay server for demo/development purposes\n\n\u003cp align=\"center\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"assets/architecture-dark.webp\"\u003e\n    \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"assets/architecture-light.webp\"\u003e\n    \u003cimg alt=\"Agent Access architecture\" src=\"assets/architecture-light.webp\" width=\"960\"\u003e\n  \u003c/picture\u003e\n\u003c/p\u003e\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for development setup, crate structure, and how to run the project.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbitwarden%2Fagent-access","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbitwarden%2Fagent-access","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbitwarden%2Fagent-access/lists"}