Skip to main content
Use one provider consistently or mix providers by section. Adapter IDs are your stable envelope routing identifiers; changing a map key creates a new identity even if its provider settings are identical.

AWS KMS

Use this adapter on the preferred ECS/Fargate deployment. runtime_environment means the ECS task role supplies short-lived credentials; the configuration contains only key ARNs.
Keep dek_cache enabled in production. It stores only non-extractable in-process key handles and avoids a KMS decrypt round trip for repeated use of the same Composio envelope. A cache loss causes another unwrap, not credential loss.

AWS fields

Static credential fields are rejected in runtime_environment mode. Runtime mode fails fast if it cannot resolve environment or container credentials. On ECS, attach the permissions to taskRoleArn, not the execution role. Required IAM permissions are kms:Encrypt and kms:Decrypt for symmetric roots, plus kms:GetPublicKey and kms:Decrypt for transfer keys. The transfer key must have KeyUsage=ENCRYPT_DECRYPT and support RSAES_OAEP_SHA_256.

GCP Cloud KMS

Use this adapter on the preferred Cloud Run deployment. Metadata auth uses the Cloud Run service identity and avoids a service-account private key.

GCP fields

{ "method": "metadata", "service_account_email": "optional@example.iam.gserviceaccount.com" }. Preferred on Cloud Run. Omit the email to use the service’s assigned identity.
Requires client_email and PEM private_key; token_uri defaults to https://oauth2.googleapis.com/token. Store the complete config as a secret.
Requires path to a service-account JSON file and is suitable only for the Node runtime. The file is read eagerly during configuration loading.
Requires a non-empty token. Use only with an external refresh/redeployment process because the config value itself does not rotate in place.
Grant the identity cloudkms.cryptoKeyVersions.useToEncrypt and useToDecrypt on symmetric keys. Transfer keys need cloudkms.cryptoKeyVersions.viewPublicKey and useToDecrypt. The transfer key version must use an RSA OAEP SHA-256 decrypt algorithm.

HashiCorp Vault Transit

Vault fields

{ "method": "token", "token": "..." }. Simple but long-lived; use a narrowly scoped renewable token and external rotation.
Requires role_id and secret_id; mount defaults to approle. Keyring exchanges them for a client token during adapter initialization.
Requires role. Set jwt explicitly or let Keyring read token_path, which defaults to /var/run/secrets/kubernetes.io/serviceaccount/token; auth mount defaults to kubernetes.
Vault policy must allow encrypt/decrypt on the two symmetric Transit keys. The transfer adapter also reads the public-key metadata and decrypts with a pinned key version; configure a rsa-2048, rsa-3072, or rsa-4096 Transit key with decryption enabled.

Development-only adapters

The symmetric adapter derives ephemeral in-process behavior and the transfer adapter generates an ephemeral RSA pair. Use this configuration only for local tests; it cannot provide durable decryption or safe multi-instance operation.