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.
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
metadata
metadata
{ "method": "metadata", "service_account_email": "optional@example.iam.gserviceaccount.com" }. Preferred on Cloud Run. Omit the email to use the service’s assigned identity.service_account_key
service_account_key
Requires
client_email and PEM private_key; token_uri defaults to https://oauth2.googleapis.com/token. Store the complete config as a secret.service_account_key_file
service_account_key_file
Requires
path to a service-account JSON file and is suitable only for the Node runtime. The file is read eagerly during configuration loading.access_token
access_token
Requires a non-empty
token. Use only with an external refresh/redeployment process because the config value itself does not rotate in place.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
token
token
{ "method": "token", "token": "..." }. Simple but long-lived; use a narrowly scoped renewable token and external rotation.approle
approle
Requires
role_id and secret_id; mount defaults to approle. Keyring exchanges them for a client token during adapter initialization.kubernetes
kubernetes
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.rsa-2048, rsa-3072, or rsa-4096 Transit key with decryption enabled.