Skip to content

Pluggable Tool Registry -- runtime registration, config.toml overrides, and plugin tools #1847

@aboimpinto

Description

@aboimpinto

Summary

Layer 3 of the Pluggable Tool Registry (#1802): runtime tool registration with config.toml overrides, auto-discovery of plugin scripts from ~/.deepseek/tools/, and an enterprise audit wrapper example.

Changes

Config.toml overrides ([tools.overrides])

Users can replace any built-in tool or disable it entirely — no fork, no recompile:

  • { type = "script", path = "wrapper.sh" } — run a script as the implementation
  • { type = "command", command = "bat", args = [...] } — run a command
  • { type = "disabled" } — remove the tool from the model's catalog

Plugin tool auto-discovery

Scripts dropped in ~/.deepseek/tools/ with frontmatter headers are auto-registered:

  • Supports #, //, and -- comment prefixes
  • Frontmatter: name, description, schema, approval
  • Script receives JSON on stdin, returns ToolResult JSON on stdout
  • Shebang resolution routes through the correct interpreter

Enterprise audit wrapper example

An exec_shell override script that logs every command with a timestamp before executing.

Implementation

  • ScriptPluginTool, CommandPluginTool — implement ToolSpec
  • ToolRegistry: remove_tool(), apply_overrides(), load_plugins()
  • Plugin tools are never deferred (immediately visible to the model)
  • Shebang + extension-based interpreter resolution

Parent

Closes the Layer 3 portion of #1802

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    Status

    Backlog

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions