For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Primary navigation

Configuring Agents

Define an agent, reuse its configuration, and customize each session.

An agent configuration defines how the agent behaves. You can supply it when creating a session or save it for reuse. The session holds the conversation and work, while the saved agent holds reusable settings.

Define the agent’s behavior

Start with the model and instructions, then add the tools and controls your task needs:

  • Model: Which model does the work.
  • Instructions: What the agent should do and how it should behave.
  • Tools: What actions the agent can take, such as searching the web or calling your functions.
  • Reasoning and output: How much reasoning the model uses and the format and detail of its responses.

Pass these settings in agent when you create a session. This example supplies a model, instructions, and the first user message:

Configure an agent for one session
from openai import OpenAI

client = OpenAI()

session = client.beta.agents.sessions.create(
    agent={
        "model": "gpt-6-astra",
        "instructions": "Answer the user clearly and concisely.",
    },
    environment={"type": "none"},
    input=[
        {
            "role": "user",
            "content": [{"type": "input_text", "text": "What can you help with?"}],
        }
    ],
)
print(session.to_json())

See the Agents API reference for configuration fields and accepted values. See Functions and MCP connections for tool setup, and Multi-agent for delegation.

Reuse an agent across sessions

Save an agent to reuse its configuration across sessions. Create it once, then pass its ID as agent_id when starting each session:

Reuse an agent
from openai import OpenAI

client = OpenAI()
agent = client.beta.agents.create(
    model="gpt-6-astra",
    instructions="Answer technical questions accurately.",
    reasoning={"summary": "auto"},
    timeout=360,
)
session = client.beta.agents.sessions.create(
    agent_id=agent.id,
    environment={"type": "none"},
    input="Explain how an agent connects to an MCP server.",
)
print(session.to_json())

Each session has its own conversation and work. See the Agents API reference to list, retrieve, update, or delete saved agents. Credentials stay in vaults, separate from the saved configuration.

Override settings for one session

Include both agent_id and agent to customize a session that uses a saved agent. The session inherits omitted settings, including the model.

Set OPENAI_AGENT_ID to the saved agent’s ID before running this example:

Override an agent for one session
import os
from openai import OpenAI

client = OpenAI()

agent_id = os.environ["OPENAI_AGENT_ID"]
session = client.beta.agents.sessions.create(
    agent_id=agent_id,
    agent={"instructions": "Answer this question in one concise paragraph."},
    environment={"type": "none"},
    input=[
        {
            "role": "user",
            "content": [
                {
                    "type": "input_text",
                    "text": "Explain how an agent connects to an MCP server.",
                }
            ],
        }
    ],
)
print(session.to_json())

Overrides apply only to that session. They do not change the saved agent or other sessions. Supplied objects and arrays replace the entire field rather than merging with the saved value. For example, supplying tools replaces the saved tool list.

See the Create session reference for request fields.

Environment settings

Set environment alongside agent when creating a session. It determines where the agent runs commands and works with files.

Choose none, openai_hosted, or self_hosted. Architecture explains when to use each option and who manages the environment.

For an OpenAI-hosted environment, configure the packages, initial files, and network access the task needs. You can reuse an environment template across sessions. For a self-hosted environment, prepare your compute and connect an executor.

See the Create session reference for environment fields and Plugins for skills, plugins, and templates. See Session artifacts for files you want to keep after execution.