Back to Changelog

May 8, 2026

Latest updates and announcements

Markdown

Session reuse, update, and connected accounts as arrays

Session reuse with composio.use()

composio.create() now returns a new session ID on every call, even for identical configs, for better isolation and observability. For multi-turn conversations, store the session ID and reuse it with composio.use():

from composio import Composio

composio = Composio()

# First request
session = composio.create(user_id="user_123")
session_id = session.session_id

# Subsequent requests
session = composio.use(session_id)
tools = session.tools()
// First request
const session = await composio.create("user_123");
const sessionId = session.sessionId;

// Subsequent requests
const session = await composio.use(sessionId);
const tools = await session.tools();

Custom tools can also be attached when reusing a session. See Reusing a session and Custom tools.

Update session config with session.update()

Modify a session's toolkits, auth configs, connected accounts, and other settings without creating a new session. Only the fields you pass are changed:

session.update(
    toolkits=["gmail", "slack"],
    auth_configs={"gmail": "ac_new_config"},
)
await session.update({
  toolkits: ["gmail", "slack"],
  authConfigs: { gmail: "ac_new_config" },
});

See Updating a session.

connectedAccounts accepts arrays

connectedAccounts (TypeScript) and connected_accounts (Python) now accept an array of connected account IDs per toolkit. A single string is still accepted for backwards compatibility and is automatically coerced to an array.

session = composio.create(
    user_id="user_123",
    connected_accounts={
        "gmail": ["ca_work_gmail"],
    },
)
const session = await composio.create("user_123", {
  connectedAccounts: {
    gmail: ["ca_work_gmail"],
  },
});

Only one account per toolkit is allowed when multi-account mode is disabled.

SDK versions

SDKMinimum version
TypeScript @composio/core0.10.0
Python composio0.13.0