Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Toggle individual CLIs on/off (extend ENABLE_HERMES pattern to Codex/OpenCode/Gemini)

Open
#29 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
78/100
Issue type
Feature
Clarity
Clearly specified
Activity status
Quiet
Tech stack
python
Domain
devops

Research direction

Start with the existing ENABLE_HERMES gate in setup_hermes.py, then compare setup_codex.py, setup_opencode.py, and setup_gemini.py. Add matching opt-out handling and document all four toggles together in app.yaml; verify the default path remains unchanged and false, 0, and no exit cleanly without installing the CLI.

Written by the indexing model from the issue text.

Description

Motivation

setup_hermes.py already supports ENABLE_HERMES=false to skip its install. The other three secondary CLIs (Codex, OpenCode, Gemini) don't have an equivalent, so an operator who knows their workspace can't actually run a particular agent has to either:

  • live with the broken install + dead UI, or
  • fork and gut the setup script.

Real triggering case: workspace adb-7405613340366915.15.azuredatabricks.net serves only databricks-gpt-oss-* models. Codex is configured with wire_api = "responses", but:

$ curl -X POST .../serving-endpoints/responses -d '{"model":"databricks-gpt-oss-120b",...}'
{"error_code":"BAD_REQUEST","message":"Responses API passthrough is not supported for model databricks-gpt-oss-120b."}
HTTP 400

So Codex on this workspace won't function regardless of which model it picks. An operator needs ENABLE_CODEX=false to cleanly skip the install rather than ship a broken agent into the terminal UI.

Fix shape (PR coming)

Replicate the Hermes pattern. 4-line gate at the top of each of setup_codex.py, setup_opencode.py, setup_gemini.py:

if os.environ.get("ENABLE_<CLI>", "true").strip().lower() in ("false", "0", "no"):
    print("ENABLE_<CLI>=false — skipping <CLI> setup")
    raise SystemExit(0)

app.yaml documents all four toggles together. Defaults to "true" for all → existing deployments are unchanged.

Out of scope

  • Claude Code stays always-on. setup_claude.py also creates ~/projects, writes ~/.claude.json with MCP servers (used app-wide), and copies subagent definitions. Some of that is non-Claude-specific. Adding ENABLE_CLAUDE=false would require disentangling those side effects first. Can be a follow-up if there's demand for a "no-Claude" deploy.
  • No UI surfacing. A skipped agent's setup-status step still shows complete (because raise SystemExit(0) is a clean exit). The print line is in the step's stdout buffer; users who care can read it. Adding a "skipped" state to the UI is more invasive — keep this PR small.
Dominant language
Python
Stars
40
Forks
11
Avg merge
1m
Merged PRs (30d)
1

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from databrickslabs/coding-agents-databricks-apps

All issues in databrickslabs/coding-agents-databricks-apps

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.