Repository navigation
Python: Clarify tool invocation authorization boundaries - #14647
Merged
Eduard van Valkenburg (eavanvalkenburg) merged 2 commits intoOct 23, 2026
Merged
Conversation
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Eduard van Valkenburg (eavanvalkenburg)
requested a review
from a team
as a code owner
October 23, 2026 12:32
Eduard van Valkenburg (eavanvalkenburg)
temporarily deployed
to
github-app-auth
October 23, 2026 12:32 — with
GitHub Actions
Inactive
Eduard van Valkenburg (eavanvalkenburg)
temporarily deployed
to
github-app-auth
October 23, 2026 12:32 — with
GitHub Actions
Inactive
Eduard van Valkenburg (eavanvalkenburg)
temporarily deployed
to
integration
October 23, 2026 12:32 — with
GitHub Actions
Inactive
Eduard van Valkenburg (eavanvalkenburg)
temporarily deployed
to
integration
October 23, 2026 12:32 — with
GitHub Actions
Inactive
Eduard van Valkenburg (eavanvalkenburg)
temporarily deployed
to
integration
October 23, 2026 12:32 — with
GitHub Actions
Inactive
Eduard van Valkenburg (eavanvalkenburg)
temporarily deployed
to
integration
October 23, 2026 12:32 — with
GitHub Actions
Inactive
Copilot started reviewing on behalf of
Eduard van Valkenburg (eavanvalkenburg)
October 23, 2026 12:32
Eduard van Valkenburg (eavanvalkenburg)
had a problem deploying
to
github-app-auth
October 23, 2026 12:33 — with
GitHub Actions
Failure
Contributor
There was a problem hiding this comment.
🟢 Approval recommended
The documentation matches existing filtering and invocation behavior, with no unresolved issues.
No open issues 🎉
What changed in this PR
This documentation-only update clarifies Python tool-calling authorization boundaries without changing runtime behavior.
Changes:
- Explains explicit nonempty allowlists, empty-list semantics, and filtering against current kernel metadata.
- Describes application authorization, invocation filters, manual approval, and preserving function-name filtering during manual dispatch.
| File | Description |
|---|---|
python/README.md |
Adds guidance on tool selection, authorization, and safe manual invocation. |
Review effort: Balanced
Jose Alvarez (jpalvarezl)
approved these changes
Oct 23, 2026
Jose Alvarez (jpalvarezl)
left a comment
Member
There was a problem hiding this comment.
Documentation accurately distinguishes function selection from application authorization. The nonempty allowlist, current-kernel metadata check, manual dispatch behavior, and invocation-filter guidance match the Python runtime.
Eduard van Valkenburg (eavanvalkenburg)
deployed
to
integration
October 23, 2026 17:50 — with
GitHub Actions
Active
Eduard van Valkenburg (eavanvalkenburg)
temporarily deployed
to
integration
October 23, 2026 17:50 — with
GitHub Actions
Inactive
Eduard van Valkenburg (eavanvalkenburg)
temporarily deployed
to
integration
October 23, 2026 17:50 — with
GitHub Actions
Inactive
Eduard van Valkenburg (eavanvalkenburg)
temporarily deployed
to
integration
October 23, 2026 17:50 — with
GitHub Actions
Inactive
Eduard van Valkenburg (eavanvalkenburg)
temporarily deployed
to
github-app-auth
October 23, 2026 17:54 — with
GitHub Actions
Inactive
Eduard van Valkenburg (eavanvalkenburg)
enabled auto-merge
October 23, 2026 17:54
Eduard van Valkenburg (eavanvalkenburg)
deployed
to
integration
October 23, 2026 17:54 — with
GitHub Actions
Active
Eduard van Valkenburg (eavanvalkenburg)
deployed
to
integration
October 23, 2026 17:54 — with
GitHub Actions
Active
Eduard van Valkenburg (eavanvalkenburg)
deployed
to
integration
October 23, 2026 17:54 — with
GitHub Actions
Active
Eduard van Valkenburg (eavanvalkenburg)
deployed
to
integration
October 23, 2026 17:54 — with
GitHub Actions
Active
Eduard van Valkenburg (eavanvalkenburg)
deleted the
sk-tool-invocation-boundaries
branch
October 23, 2026 18:05
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation and Context
Clarify the distinction between function selection and application authorization when using Python tool calling. Applications need actionable guidance on restricting available functions and authorizing model-generated calls before sensitive operations.
Description
Add a tool invocation and authorization section to the Python README covering explicit nonempty allowlists, empty inclusion-list semantics, application authorization and invocation filters, manual approval, and passing the matching
function_behaviorwhen manually dispatching calls. Explain that filtering uses current kernel metadata rather than an immutable snapshot of advertised tools.Documentation only: existing filtered dispatch already rejects nonmember functions before invocation. This change preserves runtime behavior and does not introduce a new authorization mechanism.
Validation:
git diff --check origin/main...HEAD— passed.python:.\.venv\Scripts\python.exe -m pytest tests\unit\kernel\test_kernel.py tests\unit\connectors\ai\test_function_choice_behavior.py -q— passed, 115 tests. Existing dependency/deprecation warnings were emitted, including an OpenAI client cleanup warning.Contribution Checklist