ComposioHQ/composio · error · KeyringError
NoStorageAccess
NoStorageAccess
Error message
D-Bus session bus not available — no DBUS_SESSION_BUS_ADDRESS and no /run/user/<uid>/bus
What it means
The Linux secret-tool store cannot persist a secret because no D-Bus session bus is reachable: DBUS_SESSION_BUS_ADDRESS is unset and /run/user/<uid>/bus does not exist. KeyringError kind 'NoStorageAccess'.
Source
Thrown at ts/packages/cli-keyring/src/stores/linux-secret-tool.ts:135
}
export class LinuxSecretToolStore implements CredentialStore {
readonly id = 'linux-secret-tool';
readonly vendor = 'freedesktop.org Secret Service (via secret-tool)';
persistence(): CredentialPersistence {
return CredentialPersistence.UntilDelete;
}
async setSecret(
service: string,
user: string,
secret: Uint8Array,
modifiers: EntryModifiers
): Promise<void> {
validateSpecifier(service, user);
if (missingDBus()) {
throw new KeyringError({
kind: 'NoStorageAccess',
cause: new Error(
'D-Bus session bus not available — no DBUS_SESSION_BUS_ADDRESS and no /run/user/<uid>/bus'
),
});
}
const encoded = encodeSecret(secret);
const label = modifiers.label ?? defaultLabel(service, user);
const args = ['store', '--label', label, ...attributeArgs(service, user, modifiers)];
// `secret-tool store` reads the password from stdin (one line,
// terminated by LF). encodeSecret returns ASCII base64 with our
// `b64:` prefix, so it's always a single printable line.
let result: SpawnResult;
try {
result = await runCommand({
command: SECRET_TOOL_BIN,View on GitHub (pinned to 64b1b85502)
Solutions
- Install/enable dbus-user-session (provides /run/user/<uid>/bus) and ensure a user session exists
- Export DBUS_SESSION_BUS_ADDRESS pointing at a running session bus (e.g. from dbus-launch)
- In headless contexts, use a file-based or env-based credential store instead
Defensive patterns
Strategy: fallback
Validate before calling
const busOk = !!process.env.DBUS_SESSION_BUS_ADDRESS || existsSync(`/run/user/${process.uid}/bus`); Try / catch
catch (e) { if (e instanceof KeyringError && e.kind === 'NoStorageAccess') { await fileStore.setSecret(...); } else throw e; } Prevention
- Install dbus-user-session on Linux dev machines
- Use env/file-based stores in containers
When it happens
Trigger: Calling setSecret in an SSH session, container, or systemd-less environment with no session bus.
Common situations: Docker/CI containers, headless servers, cron jobs, WSL without dbus-user-session installed.
Related errors
AI-assisted analysis of ComposioHQ/composio@64b1b85502 (2026-08-28).
Data as JSON: /api/errors/ba7e0051f51023e3.
Report an issue: GitHub.