Files
wehub-resource-sync db620d33df
CodeQL / Analyze (csharp) (push) Waiting to run
CodeQL / Analyze (python) (push) Waiting to run
dotnet-build-and-test / dotnet-test-functions (push) Has been cancelled
dotnet-build-and-test / paths-filter (push) Has been cancelled
dotnet-build-and-test / dotnet-build (Debug, windows-latest, net9.0) (push) Has been cancelled
dotnet-build-and-test / dotnet-build (Release, ubuntu-latest, net10.0) (push) Has been cancelled
dotnet-build-and-test / dotnet-build (Release, ubuntu-latest, net8.0) (push) Has been cancelled
dotnet-build-and-test / dotnet-build (Release, windows-latest, net472) (push) Has been cancelled
dotnet-build-and-test / dotnet-test (Release, integration, true, ubuntu-latest, net10.0) (push) Has been cancelled
dotnet-build-and-test / dotnet-test (Release, integration, true, windows-latest, net472) (push) Has been cancelled
dotnet-build-and-test / dotnet-foundry-hosted-it (push) Has been cancelled
dotnet-build-and-test / dotnet-build-and-test-check (push) Has been cancelled
dotnet-build-and-test / Integration Test Report (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:39:25 +08:00

2.4 KiB

Skill Tool Approval — Human-in-the-Loop for Skill Tools

This sample demonstrates the manual human-in-the-loop approval pattern for skill tools. Every tool exposed by SkillsProvider (load_skill, read_skill_resource, and run_skill_script) requires host approval by default, so the agent pauses and returns approval requests that your application approves or rejects.

How It Works

By default, skill tools require approval. The agent pauses before running any of them and returns approval requests instead:

  1. The agent tries to call a skill tool (e.g. load_skill or run_skill_script) — execution is paused
  2. result.user_input_requests contains approval request(s) with function name and arguments
  3. The application inspects each request and decides to approve or reject
  4. request.to_function_approval_response(approved=True|False) creates the response
  5. The response is sent back via agent.run(approval_response, session=session)
  6. If approved, the tool runs; if rejected, the agent receives an error

Key Components

  • Approval-by-default — All skill tools require host approval; no extra configuration is needed
  • result.user_input_requests — Contains pending approval requests after agent.run()
  • request.to_function_approval_response() — Creates an approval or rejection response

To approve skill tools automatically instead of prompting for each one, use ToolApprovalMiddleware with one of the static auto-approval rules — see the Skills Auto-Approval Sample.

Running the Sample

Prerequisites

Environment Variables

Set the required environment variables in a .env file (see python/.env.example):

  • FOUNDRY_PROJECT_ENDPOINT: Your Azure AI Foundry project endpoint
  • FOUNDRY_MODEL: The name of your model deployment (defaults to gpt-4o-mini)

Authentication

This sample uses AzureCliCredential for authentication. Run az login in your terminal before running the sample.

Run

cd python
uv run samples/02-agents/skills/script_approval/script_approval.py

Learn More