{"record":{"id":"ba7e0051f51023e3","repo":"ComposioHQ/composio","slug":"nostorageaccess","errorCode":"NoStorageAccess","errorMessage":"D-Bus session bus not available — no DBUS_SESSION_BUS_ADDRESS and no /run/user/<uid>/bus","messagePattern":"D-Bus session bus not available — no DBUS_SESSION_BUS_ADDRESS and no /run/user/<uid>/bus","errorType":"exception","errorClass":"KeyringError","httpStatus":null,"severity":"error","filePath":"ts/packages/cli-keyring/src/stores/linux-secret-tool.ts","lineNumber":135,"sourceCode":"}\n\nexport class LinuxSecretToolStore implements CredentialStore {\n  readonly id = 'linux-secret-tool';\n  readonly vendor = 'freedesktop.org Secret Service (via secret-tool)';\n\n  persistence(): CredentialPersistence {\n    return CredentialPersistence.UntilDelete;\n  }\n\n  async setSecret(\n    service: string,\n    user: string,\n    secret: Uint8Array,\n    modifiers: EntryModifiers\n  ): Promise<void> {\n    validateSpecifier(service, user);\n    if (missingDBus()) {\n      throw new KeyringError({\n        kind: 'NoStorageAccess',\n        cause: new Error(\n          'D-Bus session bus not available — no DBUS_SESSION_BUS_ADDRESS and no /run/user/<uid>/bus'\n        ),\n      });\n    }\n\n    const encoded = encodeSecret(secret);\n    const label = modifiers.label ?? defaultLabel(service, user);\n    const args = ['store', '--label', label, ...attributeArgs(service, user, modifiers)];\n\n    // `secret-tool store` reads the password from stdin (one line,\n    // terminated by LF). encodeSecret returns ASCII base64 with our\n    // `b64:` prefix, so it's always a single printable line.\n    let result: SpawnResult;\n    try {\n      result = await runCommand({\n        command: SECRET_TOOL_BIN,","sourceCodeStart":117,"sourceCodeEnd":153,"githubUrl":"https://github.com/ComposioHQ/composio/blob/64b1b85502b1beeb2379e6c9e8bf1104504fa637/ts/packages/cli-keyring/src/stores/linux-secret-tool.ts#L117-L153","documentation":"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'.","triggerScenarios":"Calling setSecret in an SSH session, container, or systemd-less environment with no session bus.","commonSituations":"Docker/CI containers, headless servers, cron jobs, WSL without dbus-user-session installed.","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"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":"const busOk = !!process.env.DBUS_SESSION_BUS_ADDRESS || existsSync(`/run/user/${process.uid}/bus`);","typeGuard":null,"tryCatchPattern":"catch (e) { if (e instanceof KeyringError && e.kind === 'NoStorageAccess') { await fileStore.setSecret(...); } else throw e; }","preventionTips":["Install dbus-user-session on Linux dev machines","Use env/file-based stores in containers"],"tags":["keyring","linux","dbus","environment","typescript"],"backgroundTag":"dbus-session-bus-missing","analyzedSha":"64b1b85502b1beeb2379e6c9e8bf1104504fa637","analyzedAt":"2026-08-28T15:39:33.623Z","schemaVersion":2},"datasetVersion":"2026-08-28T16:17:29.566Z"}