* Python: bump package versions for 1.6.0 release - Released cohort (agent-framework, core, openai, foundry): 1.5.0 -> 1.6.0 - Beta packages (21 packages): 1.0.0b260519 -> 1.0.0b260521 - Alpha packages (azure-contentunderstanding, foundry-hosting, gemini, monty): 1.0.0a260518/19 -> 1.0.0a260521 - ag-ui stays at 1.0.0rc2, orchestrations at 1.0.0rc1 (dependency bounds updated) - Inter-package dependency lower bounds updated (>=1.5.0,<2 -> >=1.6.0,<2) - Update CHANGELOG compare links - uv.lock refreshed Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address review: bump RC packages, add shell tool to changelog - ag-ui: 1.0.0rc2 -> 1.0.0rc3 - orchestrations: 1.0.0rc1 -> 1.0.0rc2 - Add shell tool (#5664) to CHANGELOG - uv.lock refreshed Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
agent-framework-hyperlight
Hyperlight-backed CodeAct integrations for Microsoft Agent Framework.
Installation
pip install agent-framework-hyperlight --pre
This package depends on hyperlight-sandbox, the packaged Python guest, and the
Wasm backend package on supported platforms. If the backend is not published for
your current platform yet, execute_code will fail at runtime when it tries to
create the sandbox.
Quick start
Context provider (recommended)
Use HyperlightCodeActProvider to automatically inject the execute_code tool
and CodeAct instructions into every agent run. Tools registered on the provider
are available inside the sandbox via call_tool(...) but are not exposed as
direct agent tools.
from agent_framework import Agent, tool
from agent_framework_hyperlight import HyperlightCodeActProvider
@tool
def compute(operation: str, a: float, b: float) -> float:
"""Perform a math operation."""
ops = {"add": a + b, "subtract": a - b, "multiply": a * b, "divide": a / b}
return ops[operation]
codeact = HyperlightCodeActProvider(
tools=[compute],
approval_mode="never_require",
)
agent = Agent(
client=client,
name="CodeActAgent",
instructions="You are a helpful assistant.",
context_providers=[codeact],
)
result = await agent.run("Multiply 6 by 7 using execute_code.")
Standalone tool
Use HyperlightExecuteCodeTool directly when you want full control over how the
tool is added to the agent. This is useful when mixing sandbox tools with
direct-only tools on the same agent.
from agent_framework import Agent, tool
from agent_framework_hyperlight import HyperlightExecuteCodeTool
@tool
def send_email(to: str, subject: str, body: str) -> str:
"""Send an email (direct-only, not available inside the sandbox)."""
return f"Email sent to {to}"
execute_code = HyperlightExecuteCodeTool(
tools=[compute],
approval_mode="never_require",
)
agent = Agent(
client=client,
name="MixedToolsAgent",
instructions="You are a helpful assistant.",
tools=[send_email, execute_code],
)
Manual static wiring
For fixed configurations where provider lifecycle overhead is unnecessary, build the CodeAct instructions once and pass them to the agent at construction time:
execute_code = HyperlightExecuteCodeTool(
tools=[compute],
approval_mode="never_require",
)
codeact_instructions = execute_code.build_instructions(tools_visible_to_model=False)
agent = Agent(
client=client,
name="StaticWiringAgent",
instructions=f"You are a helpful assistant.\n\n{codeact_instructions}",
tools=[execute_code],
)
File mounts and network access
Mount host directories into the sandbox and allow outbound HTTP to specific domains:
from agent_framework_hyperlight import HyperlightCodeActProvider, FileMount
codeact = HyperlightCodeActProvider(
tools=[compute],
file_mounts=[
"/host/data", # shorthand โ same path in sandbox
("/host/models", "/sandbox/models"), # explicit host โ sandbox mapping
FileMount("/host/config", "/sandbox/config"), # named tuple
],
allowed_domains=[
"api.github.com", # all methods
("internal.api.example.com", "GET"), # GET only
],
)
Notes
- This package is intentionally separate from
agent-framework-coreso CodeAct usage and installation remain optional. Withagent-framework-core[all](or the metaagent-framework) installed it is also reachable through the lazy-loading namespaceagent_framework.hyperlight. file_mountsaccepts a single string shorthand, an explicit(host_path, mount_path)pair, or aFileMountnamed tuple. The host-side path in the explicit forms may be astrorPath. Use the explicit two-value form when the host path differs from the sandbox path.allowed_domainsaccepts a single string target such as"github.com"to allow all backend-supported methods, an explicit(target, method_or_methods)tuple such as("github.com", "GET"), or anAllowedDomainnamed tuple.- Tools registered with the sandbox return their native Python value
(
dict,list, primitives, or custom objects) directly to the guest via the Hyperlight FFI. Anyresult_parserconfigured on aFunctionToolis intended for LLM-facing consumers and does not run on the sandbox path โ apply formatting inside the tool function itself if you need it for in-sandbox consumers.