Method signature

async getSession(): Promise<string | null>

Parameters

This method takes no parameters.

Return value

TypeDescription
Promise<string | null>The current session ID if one is set, or null if no session is active

Examples

Basic Usage

const vibeKit = new VibeKit({
  agent: {
    type: "codex", // or "claude"
    model: {
      apiKey: "sk-proj-****"
    },
    mode: "code"
  },
  environment: {
    e2b: {
      apiKey: "e2b_****"
    }
  }
});

// Get the current session ID
const sessionId = await vibeKit.getSession();

if (sessionId) {
  console.log("Current session:", sessionId);
} else {
  console.log("No active session");
}

Session Management Workflow

// Check if there's an existing session
let sessionId = await vibeKit.getSession();

if (!sessionId) {
  // No session exists, generate some code to create one
  await vibeKit.generateCode("console.log('Hello World')");
  
  // Now get the new session ID
  sessionId = await vibeKit.getSession();
  console.log("New session created:", sessionId);
}

// Store the session ID for later use
localStorage.setItem('vibekit-session', sessionId);

Error handling

try {
  const sessionId = await vibeKit.getSession();
  console.log("Session ID:", sessionId);
} catch (error) {
  if (error.message.includes('not initialized')) {
    console.error("Agent is not properly initialized");
  } else {
    console.error("Unexpected error:", error.message);
  }
}

Error handling

The method throws errors in the following cases:

Initialization Error

  • Condition: When the agent is not properly initialized
  • Error Message: “Agent not initialized”
  • Solution: Verify your configuration includes valid credentials and the agent is properly set up
// Correct configuration for session management
const config = {
  agent: {
    type: "codex", // or "claude"
    model: {
      apiKey: "your-api-key"
    },
    mode: "code"
  },
  environment: {
    e2b: {
      apiKey: "your-e2b-api-key" // For Codex agent
    }
    // Claude agent may have different environment requirements
  }
};

Use cases

Session Persistence

Store and retrieve session IDs to maintain continuity across application restarts:

// On app startup, try to restore previous session
const storedSessionId = localStorage.getItem('vibekit-session');
if (storedSessionId) {
  await vibeKit.setSession(storedSessionId);
}

// Verify the session is active
const currentSession = await vibeKit.getSession();
if (currentSession === storedSessionId) {
  console.log("Session restored successfully");
}

Multi-User Applications

Track different user sessions in multi-user environments:

async function getUserSession(userId: string) {
  const currentSession = await vibeKit.getSession();
  
  // Store session mapping
  if (currentSession) {
    await database.saveUserSession(userId, currentSession);
  }
  
  return currentSession;
}
  • setSession - Set a specific session ID for the sandbox
  • generateCode - Generate code (creates a session if none exists)

Notes

  • Session Auto-Creation: Sessions are automatically created when you first use generateCode() with either agent
  • Session Persistence: Sessions persist across multiple generateCode() calls until explicitly changed or the sandbox is terminated
  • Null Return: Returns null when no session has been established yet
  • Cross-Agent Support: This functionality works with both Codex and Claude agents