Skip to Content

Configuration Options

The ISAAgentOptions class controls all aspects of agent behavior.

Basic Usage

from isa_agent_sdk import query, ISAAgentOptions options = ISAAgentOptions( model="gpt-4o-mini", allowed_tools=["web_search", "read_file"], max_iterations=30 ) async for msg in query("Your prompt", options=options): print(msg.content, end="" if msg.is_text else "\n")

Core Options

Model Configuration

options = ISAAgentOptions( # LLM model to use model="gpt-4o-mini", # Default model )

Available Models:

  • gpt-4o-mini - Fast, cost-effective (default)
  • gpt-4o - High capability
  • deepseek-reasoner - Reasoning model (chain-of-thought)
  • llama-3.3-70b - Open source alternative

System Prompts (Claude SDK Compatible)

Customize agent behavior with system prompts. Supports three modes:

from isa_agent_sdk import ISAAgentOptions, SystemPromptConfig, SystemPromptPreset # 1. Simple string - appends to default prompt (backwards compatible) options = ISAAgentOptions( system_prompt="Always respond in formal English. Be concise." ) # 2. Preset with custom additions (recommended) options = ISAAgentOptions( system_prompt=SystemPromptConfig( preset=SystemPromptPreset.REASON, # Use MCP template append="Focus on security implications in your analysis." ) ) # 3. Full replacement (loses built-in capabilities) options = ISAAgentOptions( system_prompt=SystemPromptConfig( replace="You are a specialized security auditor. Analyze code for vulnerabilities." ) )

Available Presets:

PresetMCP TemplateDescription
REASONdefault_reason_promptFor reasoning/planning phase
RESPONSEdefault_response_promptFor final response generation
RAG_REASONrag_reason_promptReasoning with user’s uploaded files
REVIEWdefault_review_promptFor evaluating execution results
MINIMALminimal_promptMinimal base, mostly custom instructions

How it works:

  • MCP stores the base prompt templates with variables ({{memory}}, {{tools}}, etc.)
  • Your append text is injected as {{user_instructions}} into the template
  • Use replace only when you need complete control (not recommended)

Tool Configuration

options = ISAAgentOptions( # Explicit tool allowlist allowed_tools=["web_search", "read_file", "write_file", "bash"], # Tool discovery mode tool_discovery=ToolDiscoveryMode.HYBRID, # explicit, semantic, hybrid )

Tool Discovery Modes:

ModeDescription
EXPLICITOnly use tools in allowed_tools list
SEMANTICDiscover tools based on query context
HYBRIDCombine explicit list with semantic discovery

Permission Modes

from isa_agent_sdk import PermissionMode options = ISAAgentOptions( permission_mode=PermissionMode.DEFAULT )
ModeDescription
DEFAULTAsk for permission on sensitive operations
ACCEPT_EDITSAuto-approve file edits, ask for others
BYPASS_PERMISSIONSNo permission checks (use carefully)

Execution Modes

Reactive Mode (Default)

Standard request-response interaction:

from isa_agent_sdk import ExecutionMode options = ISAAgentOptions( execution_mode=ExecutionMode.REACTIVE )

Collaborative Mode

For long-running tasks with checkpoints:

options = ISAAgentOptions( execution_mode=ExecutionMode.COLLABORATIVE, checkpoint_frequency=5, # Checkpoint every 5 tasks )

Features:

  • Durable execution (survives restarts)
  • Periodic checkpoints
  • Resume capability

Proactive Mode

For event-driven autonomous operation:

options = ISAAgentOptions( execution_mode=ExecutionMode.PROACTIVE, proactive_suggestions=True, # Enable suggestions )

Features:

  • Event triggers
  • Autonomous task execution
  • Proactive suggestions

Safety & Guardrails

from isa_agent_sdk import GuardrailMode options = ISAAgentOptions( # Enable guardrails guardrails_enabled=True, # Guardrail strictness guardrail_mode=GuardrailMode.MODERATE, # permissive, moderate, strict # Confidence-based failsafe failsafe_enabled=True, failsafe_confidence_threshold=0.7, # 0.0-1.0 # Iteration limit max_iterations=30, )

Guardrail Modes:

ModeDescription
PERMISSIVEMinimal restrictions
MODERATEBalanced safety (default)
STRICTMaximum safety checks

Session Management

options = ISAAgentOptions( # Session identification session_id="my-session-123", # Auto-generated if not provided user_id="user-456", # Session lifetime session_ttl=3600, # 1 hour (seconds) # Resume previous session resume="previous-session-id", # Additional metadata metadata={ "project": "my-project", "environment": "production" } )

Execution Environment

from isa_agent_sdk import ExecutionEnv options = ISAAgentOptions( # Where to run the agent execution_env=ExecutionEnv.CLOUD_POOL, # cloud_pool, cloud_shared, desktop # Pool configuration (for cloud_pool) pool_config=PoolConfig( pool_type="standard", ttl=600, memory=512, cpu=1 ), # Desktop agent URL (for desktop) desktop_agent_url="ws://localhost:9000" )

Execution Environments:

EnvironmentDescription
CLOUD_POOLIsolated VM per session
CLOUD_SHAREDShared cloud resources
DESKTOPLocal desktop agent

MCP Server Configuration

Connect to External MCP Servers

from isa_agent_sdk import MCPServerConfig options = ISAAgentOptions( mcp_servers={ "github": MCPServerConfig( command="npx", args=["-y", "@modelcontextprotocol/server-github"], env={"GITHUB_TOKEN": "your-token"} ), "filesystem": MCPServerConfig( command="npx", args=["-y", "@modelcontextprotocol/server-filesystem", "/path/to/dir"] ), "custom": MCPServerConfig( url="http://localhost:8081/mcp" ) } )

Graph Type Selection

options = ISAAgentOptions( # Agent architecture graph_type="smart_agent", # smart_agent, research, coding, conversation )

Graph Types:

TypeDescription
smart_agentGeneral-purpose with reasoning
researchOptimized for research tasks
codingOptimized for code tasks
conversationSimple chat without tools

Summarization

options = ISAAgentOptions( # Auto-summarize long conversations summarization_enabled=True, )

Structured Outputs

Get validated JSON matching a specific schema:

from isa_agent_sdk import OutputFormat # From Pydantic model (recommended) from pydantic import BaseModel class Recipe(BaseModel): name: str ingredients: list[str] prep_time_minutes: int options = ISAAgentOptions( output_format=OutputFormat.from_pydantic(Recipe) ) # From JSON schema options = ISAAgentOptions( output_format=OutputFormat.json_schema({ "type": "object", "properties": { "name": {"type": "string"}, "items": {"type": "array", "items": {"type": "string"}} }, "required": ["name"] }) ) # Simple JSON mode (no schema validation) options = ISAAgentOptions( output_format=OutputFormat.json_object() )

OutputFormat Types:

TypeDescription
textDefault free-form text
json_objectValid JSON (no schema)
json_schemaSchema-validated JSON

See Structured Outputs for complete documentation.

Skills Configuration

options = ISAAgentOptions( # Activate specialized skills skills=["code-review", "debug", "refactor"] )

Built-in Skills:

  • code-review - Expert code reviewer
  • debug - Systematic debugger
  • refactor - Refactoring specialist
  • test-writer - Test coverage expert
  • documentation - Technical writer

Loading from File

YAML Configuration

# agent_config.yaml model: gpt-4o-mini allowed_tools: - web_search - read_file - write_file - bash execution_mode: collaborative guardrails_enabled: true guardrail_mode: moderate max_iterations: 30 skills: - code-review - debug mcp_servers: github: command: npx args: ["-y", "@modelcontextprotocol/server-github"]
options = ISAAgentOptions.from_file("agent_config.yaml")

Runtime Configuration

Convert options to runtime configs:

# For SmartAgentGraph graph_config = options.to_graph_config() # For LangGraph runtime runtime_config = options.to_runtime_config()

Full Reference

OptionTypeDefaultDescription
modelstr“gpt-4o-mini”LLM model
system_promptstr | SystemPromptConfigNoneCustom system prompt (preset/append/replace)
allowed_toolsList[str]NoneTool allowlist
permission_modePermissionModeDEFAULTPermission handling
execution_modeExecutionModeREACTIVEExecution mode
execution_envExecutionEnvCLOUD_SHAREDWhere to run
graph_typestr“smart_agent”Agent architecture
guardrails_enabledboolTrueEnable guardrails
guardrail_modeGuardrailModeMODERATEGuardrail strictness
failsafe_enabledboolTrueConfidence failsafe
failsafe_confidence_thresholdfloat0.7Failsafe threshold
max_iterationsint30Max graph iterations
tool_discoveryToolDiscoveryModeHYBRIDTool discovery mode
summarization_enabledboolTrueAuto-summarize
checkpoint_frequencyint5Checkpoint frequency
proactive_suggestionsboolFalseEnable suggestions
session_idstrAutoSession identifier
user_idstrNoneUser identifier
session_ttlint3600Session TTL (seconds)
resumestrNoneSession to resume
skillsList[str]NoneSkills to activate
output_formatOutputFormatNoneStructured output format
mcp_serversDictMCP server configs
pool_configPoolConfigNonePool configuration
metadataDictNoneAdditional metadata
max_concurrent_reasoningint4Bulkhead pool size for model calls
max_concurrent_toolsint8Bulkhead pool size for tool execution
bulkhead_queue_timeoutfloat30.0Timeout waiting for bulkhead slot (seconds)
tier_routing_enabledboolFalseIntent-driven model tier routing
lightweight_contextboolFalseSkip heavy context init for A2A delegation

Next Steps