Skip to content

[dotnet-port-api] Port skill detailed script errors option #378

Description

@github-actions

Summary

Ported the .NET skills provider detailed script error option from microsoft/agent-framework@e049bb5. Go now exposes skills.ContextProviderOptions.IncludeDetailedErrors; when enabled, run_skill_script returns the script runner error message in the model-visible result. When disabled, script runner errors propagate to the caller so tool invocation middleware can apply its own error-detail policy.

Ported .NET PRs

Breaking Changes

Yes. Previously Go swallowed script runner errors and returned a generic Error: Failed to execute script ... string from run_skill_script. The default now propagates script runner errors unless IncludeDetailedErrors is enabled, matching .NET behavior and allowing caller/tool middleware to control error detail disclosure. This is acceptable while the Go SDK is in beta and improves cross-SDK parity.

Tests and Examples

  • Added skills provider tests for default script error propagation and opt-in detailed script errors.
  • Ran go test ./agent/skills/....

Notes

  • Upstream commit range inspected: 88f0b23fb022b0adf33f5772b4b56a41289db748..d5c5fb9d3de3a19c0f55d958464646dfefdb59e3; upstream head inspected: d5c5fb9d3de3a19c0f55d958464646dfefdb59e3.
  • Kept the port focused on the exported detailed-errors option and script execution behavior. The same upstream PR also adjusted resource exception propagation, which is not tied to the new public option and can be considered separately by the fixes workflow if needed.
  • Other recent upstream candidates were skipped as broader, provider-specific, internal, or .NET-specific changes.

Generated by .NET to Go API Porting Agent · 1.1K AIC · ⌖ 32.1 AIC · ⊞ 21.6K ·


Note

This was originally intended as a pull request, but GitHub Actions is not permitted to create or approve pull requests in this repository.
The changes have been pushed to branch dotnet-port-api-skill-detailed-errors-45c145392d913517.

Click here to create the pull request

To fix the permissions issue, go to SettingsActionsGeneral and enable Allow GitHub Actions to create and approve pull requests. See also: gh-aw FAQ

Show patch preview (169 of 169 lines)
From 48322db8571e189f04e40672ef7601bb02553add Mon Sep 17 00:00:00 2001
From: "github-actions[bot]" <github-actions[bot]@users.noreply.github.com>
Date: Sat, 27 Jun 2026 06:39:29 +0000
Subject: [PATCH] Port skill detailed script errors option

Add ContextProviderOptions.IncludeDetailedErrors for skills so script execution failures can opt in to model-visible error details while propagating runner errors by default.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---
 agent/skills/provider.go                 | 31 ++++++++++----
 agent/skills/provider_test.go            | 54 ++++++++++++++++++++++++
 docs/dotnet-go-sdk-feature-comparison.md |  2 +-
 3 files changed, 77 insertions(+), 10 deletions(-)

diff --git a/agent/skills/provider.go b/agent/skills/provider.go
index 2ba0d4f21..023ec8e6e 100644
--- a/agent/skills/provider.go
+++ b/agent/skills/provider.go
@@ -65,6 +65,16 @@ type ContextProviderOptions struct {
 	// ScriptApproval marks the run_skill_script tool as requiring approval.
 	ScriptApproval bool
 
+	// IncludeDetailedErrors includes script execution error details in the
+	// run_skill_script result returned to the model.
+	//
+	// When false, script execution errors are returned to the caller so tool
+	// invocation middleware can apply its own error-detail policy. When true,
+	// the exception message is appended to the tool result so the model can
+	// retry with different arguments. Only enable this for trusted skills and
+	// scripts because raw error messages may contain prompt-injection content.
+	IncludeDetailedErrors bool
+
 	// DisableCaching rebuilds instructions and tools for every invocation.
 	DisableCaching bool
 
@@ -386,7 +396,7 @@ func (p *providerState) buildTools(skills providedSkillSet) []tool.Tool {
 			Arguments  []string `json:"arguments,omitempty" jsonschema:"Positional CLI-style string arguments for the script, e.g. [\"--value\",\"26.2\",\"--factor\",\"1.60934\"]"`
 		},
 		) (any, error) {
-			return p.runSki
... (truncated)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions