tool-arg-guard — gate kind + catalog pack for deterministic tool-argument validation
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 25/100
Research direction
The issue names pre-tool-use hooks and the mcp-gateway tool_use surface, but no files or tests; first trace where each surface exposes structured tool arguments and how the existing shell guard is cataloged. Done means a declarative argument-constraint gate and seed pack cover the proposed cases, with coverage reported per surface and free-text shell remaining advisory or handled by existing guards.
Written by the indexing model from the issue text.
Description
Problem
Tool misuse via LLM-extracted arguments (OWASP ASI02): an agent told to "delete the old archive" extracts a path that resolves to root, concatenates unsanitized strings into shell/SQL, or walks a path traversal out of the workspace. Today the catalog's enforced answer covers the shell slice only (block-destructive-commands); typed tool schemas validate shape, not safety (a perfectly typed path can still be /).
Proposal
A new gate kind for declarative, deterministic tool-argument constraints, evaluated wherever tool calls are interceptable:
- constraint vocabulary: path containment (must resolve inside repo/declared roots), regex allow/deny per argument, enum/type checks, value ceilings, cross-arg predicates (e.g.
recursive=truerequires containment depth ≥ 2) - surfaces: pre-tool-use hooks where the client exposes structured tool args; mcp-gateway
tool_usefor MCP-routed calls - catalog seed pack: filesystem-delete guard, path-traversal block, shell-concat deny, SQL-string deny
Honest caveats (from the wedge-line PowerShell lesson)
- Argument vocabulary is per-client — a guard that matches one client's tool schema and reports "enforced" while missing another's native forms is the overclaim failure Chock exists to refuse. Coverage rows must be per-surface.
- Only surfaces exposing structured args can rise above advisory; free-text shell stays with the existing shell guards.
Mechanizes agent_discipline/ASI02 beyond shell, and gives the mcp-gateway a second gateway-native policy family beside egress.
- Dominant language
- Python
- Stars
- 8
- Forks
- 1
- Avg merge
- 2h 48m
- Merged PRs (30d)
- 114
Getting set up
Starts the project's dev container in your browser, under your own GitHub account.
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from open-coder-ai/chock
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
open-coder-ai/chock#238 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
open-coder-ai/chock#231 ·
Maintainers usually reply within 1 day
-
good first issue help wanted
Difficulty 2/5 Half a day Newbie friendliness 85/100
open-coder-ai/chock#133 ·
Maintainers usually reply within 1 day
-
good first issue
Difficulty 3/5 Half a day Newbie friendliness 68/100
open-coder-ai/chock#132 ·
Maintainers usually reply within 1 day
-
good first issue
Difficulty 5/5 Over a week Newbie friendliness 45/100
open-coder-ai/chock#131 ·
Maintainers usually reply within 1 day
All issues in open-coder-ai/chock
Similar issues
-
bug difficulty:2 good first issue help wanted
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
MakazhanAlpamys/Soup#1865 ·
Maintainers usually reply within 1 day
-
area: agents area: docs good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
openapi/gknowledge#23 ·
-
useless-suppression reported for deprecated-* messages that should be exemptPossibly taken @adityasinha-ghub claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
pylint-dev/pylint#11656 ·
Maintainers usually reply within 1 day
-
area:provisioning effort:S priority:P2 provider:local-libvirt risk:daytime-only status:in-progress type:bug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
randomparity/kdive#3203 · 2 comments ·
Maintainers usually reply within 1 day
-
get() for StrEnumPossibly taken @FeJo5952 claimed this today. Opengood first issue
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
collective/icalendar#1921 · 1 comment ·
Maintainers usually reply within 1 day