API Reference
Primary entry points
Section titled “Primary entry points”Open Agent SDK exposes two primary usage styles:
prompt()for one-shot requestscreateSession()/resumeSession()/forkSession()for stateful workflows
import { prompt, createSession, resumeSession, forkSession } from 'open-agent-sdk';Prompt API
Section titled “Prompt API”import { prompt } from 'open-agent-sdk';
const out = await prompt('Summarize this repository.', { model: 'gpt-5.4', provider: 'codex', maxTurns: 8, permissionMode: 'default'});prompt() returns:
result: stringduration_ms: numberusage: { input_tokens; output_tokens }session_id?: stringstructured_output?: unknown
Common PromptOptions fields:
model: string(required)provider?: 'openai' | 'google' | 'anthropic' | 'codex' | 'openai-codex'apiKey?: stringbaseURL?: stringcodexOAuth?: CodexOAuthOptionsmaxTurns?: numberallowedTools?: string[]permissionMode?: 'default' | 'acceptEdits' | 'bypassPermissions' | 'plan'storage?: SessionStorageresume?: stringforkSession?: booleanoutputFormat?: OutputFormat
Session API
Section titled “Session API”import { createSession } from 'open-agent-sdk';
const session = await createSession({ model: 'gpt-5.4', provider: 'codex', systemPrompt: 'You are a repository assistant.', maxTurns: 12,});
await session.send('List important modules.');for await (const event of session.stream()) { // handle assistant/tool/system events}await session.close();Lifecycle methods:
await session.send(message)for await (const event of session.stream()) { ... }session.getMessages()await session.close()
Resume and fork:
import { resumeSession, forkSession, FileStorage } from 'open-agent-sdk';
const storage = new FileStorage({ cwd: process.cwd() });const resumed = await resumeSession('session-id', { storage });const forked = await forkSession('session-id', { storage, model: 'gpt-5.4', provider: 'codex' });Providers and authentication
Section titled “Providers and authentication”Supported providers:
- Codex OAuth
- OpenAI
- Google Gemini
- Anthropic
Provider can be explicit (provider) or auto-detected from model naming conventions. For Codex OAuth, run codex login once and then use provider: 'codex'.
Base URL behavior
Section titled “Base URL behavior”- Default auth uses provider-specific API keys
- You can set
baseURLfor proxies or compatible endpoints - Anthropic-compatible endpoints may use different auth strategies automatically
Permissions
Section titled “Permissions”Permission modes:
defaultacceptEditsbypassPermissionsplan
bypassPermissions requires allowDangerouslySkipPermissions: true.
Custom permission callback:
import type { CanUseTool } from 'open-agent-sdk';
const canUseTool: CanUseTool = async (toolName, input) => { if (toolName === 'Bash') { return { behavior: 'deny', message: 'Bash is disabled in this runtime.', interrupt: false, }; }
return { behavior: 'allow', updatedInput: input, };};Attach with prompt({ canUseTool }) or createSession({ canUseTool }).
Type reference
Section titled “Type reference”Frequently used exported types:
import type { PromptOptions, PromptResult, Session, CreateSessionOptions, ResumeSessionOptions, ForkSessionOptions, PermissionMode, CanUseTool, OutputFormat, Tool, ToolDefinition, SDKMessage,} from 'open-agent-sdk';Built-in tool IO types include:
ReadInput,ReadOutputWriteInput,WriteOutputEditInput,EditOutputBashInput,BashOutputWebSearchInput,WebSearchOutputWebFetchInput,WebFetchOutput
Session and storage types include:
SessionStorageSessionDataFileStorageOptionsInMemoryStorageFileStorage
Hook-related types include:
HookEventHookInputHookCallbackSessionStartHookInputPostToolUseHookInputPermissionRequestHookInput
Structured output:
import { Schema, type OutputFormat } from 'open-agent-sdk';
const outputFormat: OutputFormat = { name: 'summary', description: 'Structured summary', schema: Schema.object({ title: Schema.string(), bullets: Schema.array(Schema.string()), }),};