Skip to content

feat(cli): --no-builtin-tools / -nbt flag (#23)#244

Merged
quangdang46 merged 1 commit into
masterfrom
feat/no-builtin-tools-flag
May 23, 2026
Merged

feat(cli): --no-builtin-tools / -nbt flag (#23)#244
quangdang46 merged 1 commit into
masterfrom
feat/no-builtin-tools-flag

Conversation

@quangdang46
Copy link
Copy Markdown
Owner

Adds a global flag that disables the built-in tool registry while keeping MCP server tools and extension tools.

jcode --no-builtin-tools                 # disable built-ins
jcode -nbt                                # short alias
JCODE_NO_BUILTIN_TOOLS=1 jcode           # env equivalent

Behavior

When active, the Registry::new path:

  • Skips base_tools() (read, write, edit, bash, grep, agentgrep, etc.)
  • Skips per-session built-ins (subagent, batch, conversation_search)
  • Logs a confirmation line at session start

MCP and extension tools (added separately) still load.

Tests

$ cargo test -p jcode --lib tool::tests::test_no_builtin_tools
$ cargo test -p jcode --lib tool::tests::test_default_registry_has_builtin
both green

Closes #23.

Adds a global flag that disables the built-in tool registry while keeping
MCP server tools and extension tools (when extension framework lands).
Useful for sandbox testing or strict-policy setups where the user wants
a fully user-provided tool surface.

Wiring:
- src/cli/args.rs: --no-builtin-tools (alias -nbt) global flag.
- src/cli/startup.rs: translate to JCODE_NO_BUILTIN_TOOLS=1.
- src/tool/mod.rs::Registry::new: when env var truthy, skip both base_tools
  and the per-session subagent/batch/conversation_search tools.

When active, jcode logs:
  JCODE_NO_BUILTIN_TOOLS=1 — skipping built-in tool registry (MCP +
  extension tools still load)

so users can confirm the gate took effect.

2 new tests:
- test_no_builtin_tools_env_disables_registry: env=1 produces empty registry
- test_default_registry_has_builtin_tools: negative control

Closes #23.
@quangdang46 quangdang46 merged commit 349edd8 into master May 23, 2026
@quangdang46 quangdang46 deleted the feat/no-builtin-tools-flag branch May 23, 2026 09:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

--no-builtin-tools / -nbt: disable built-in tools but keep extension and custom tools

1 participant