Repository navigation
Description
Description
Bug: run_skill_script approval handshake leaves function call unanswered in local Inspector
Environment
agent-framework-foundry-hosting |
1.0.0b260721 |
agent-framework-foundry |
1.10.2 |
| Agent type | ResponsesHostServer (Responses API) |
| Run mode | Local (azd ai agent run) |
| Inspector | Agent Inspector (VS Code / Foundry Toolkit) |
| OS | Windows 11 |
Description
When using a SkillsProvider with a script_runner and the default approval mode, approving the run_skill_script tool call in the Agent Inspector does not complete correctly. The tool block shows a red ✗ and the function call result is never submitted back to the Responses API. On the next turn the API rejects the request with a 400 error.
Steps to Reproduce
-
Create an agent with a file-based skill and a
script_runner(you can use the 07-skills example provided by Microsoft):skills_provider = SkillsProvider.from_paths( skill_paths=Path(__file__).parent / "skills", script_runner=run_local_skill_script, # default: approvals enabled for all tools ) agent = Agent(client=client, context_providers=[skills_provider], ...) server = ResponsesHostServer(agent) server.run()
-
Start the agent locally with
azd ai agent runorF5to start the service and open the Agent Inspector -
Open the Agent Inspector and send a message that triggers
run_skill_script(e.g."Greet me"with agreet-userskill). -
The Inspector shows an approval dialog for
load_skill→ approve it. ✅ -
The Inspector shows
run_skill_scriptbut stays there forever
Actual Behavior
-
After
run_skill_script, the tool block shows a red ✗ and the agent hangs. -
The script runner function is never called (confirmed by adding logging before and inside the function — the entry log never appears).
-
On the next conversation turn, the Responses API returns:
server_error: ( "<class 'agent_framework_foundry._chat_client.FoundryChatClient'> service failed to complete the prompt: Error code: 400 - {'error': {'message': 'No tool output found for function call call_<id>.', 'type': 'invalid_request_error', 'param': 'input', 'code': None}}", BadRequestError(...) )
Expected Behavior
After the approval, the framework should:
- Call the registered
script_runner. - Submit the returned string as the tool output to the Responses API.
- Allow the model to continue and produce a final reply.
Root Cause Hypothesis
The approval round-trip for run_skill_script uses the Responses API's function call / tool output mechanism. After the user clicks Approve in the Inspector, the hosting layer (ResponsesHostServer) fails to deliver the tool output back to the API in the follow-up request, leaving the function call call_<id> dangling. The API then rejects the next request because the conversation history contains an unresolved function call with no corresponding tool output.
The script_runner itself is never invoked — the failure occurs inside the framework before the runner is reached.
Workaround
Pass disable_run_skill_script_approval=True (and optionally disable_load_skill_approval=True) to SkillsProvider.from_paths(). This is safe for trusted local scripts and bypasses the broken approval round-trip entirely:
skills_provider = SkillsProvider.from_paths(
skill_paths=Path(__file__).parent / "skills",
script_runner=run_local_skill_script,
disable_load_skill_approval=True,
disable_run_skill_script_approval=True,
)
### Code Sample
```markdownError Messages / Stack Traces
: (
"<class 'agent_framework_foundry._chat_client.FoundryChatClient'> service failed to complete the prompt:
Error code: 400 - {'error': {'message': 'No tool output found for function call call_<id>.',
'type': 'invalid_request_error', 'param': 'input', 'code': None}}",
BadRequestError(...)
)Package Versions
agent-framework-foundry-hosting: 1.0.0b260721, agent-framework-foundry: 1.10.2
Python Version
Python 3.13
Additional Context
With default approval values:
Screenshot 1: Waiting for approval

Screenshot 2: After approval was accepted
Screenshot 3: In second round (entered the same prompt to trigger the skill, 'Greet me')
After the workaround:
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsDone

Activity
herohua commentedon Jul 23, 2026
We observed the same error with approval-gated
run_shellin Agent Inspector. After approval, the follow-up response immediately fails with “No tool output found.” Disabling shell approval avoids the issue. Could this be due to the same underlying root cause?Python: Fix duplicate function call on approval round-trip (microsoft…