Skip to content

Commit e8f6e4e

Browse files
LittleCoinCoinLittleCoinCoin
authored andcommitted
feat(codex): add CLI arguments for Codex
Add 6 new CLI arguments to support Codex-specific MCP server configuration: - --env-vars: Whitelist environment variable names to forward (List[str]) - --startup-timeout: Server startup timeout in seconds (int) - --tool-timeout: Tool execution timeout in seconds (int) - --enabled: Enable/disable server flag (bool) - --bearer-token-env-var: Bearer token environment variable name (str) - --env-header: HTTP headers from env vars in KEY=ENV_VAR format (Dict[str,str]) Existing arguments reused for Codex: - --cwd: Working directory (shared with Gemini) - --include-tools: Tool allow-list (shared with Gemini) - --exclude-tools: Tool deny-list (shared with Gemini) - --header: Static HTTP headers (universal) - --env-var: Environment variables (universal) Changes: - Add 6 argument definitions to setup_mcp_configure_parser() - Add 6 parameter mappings in handle_mcp_configure() - Update function signature with 6 new parameters - Update main() function call with 6 new arguments - Add env_header parsing logic (KEY=ENV_VAR format to dict) All 10 Codex TOML fields now configurable via CLI.
1 parent 97d386b commit e8f6e4e

File tree

1 file changed

+72
-0
lines changed

1 file changed

+72
-0
lines changed

hatch/cli_hatch.py

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -716,6 +716,12 @@ def handle_mcp_configure(
716716
disabled: Optional[bool] = None,
717717
auto_approve_tools: Optional[list] = None,
718718
disable_tools: Optional[list] = None,
719+
env_vars: Optional[list] = None,
720+
startup_timeout: Optional[int] = None,
721+
tool_timeout: Optional[int] = None,
722+
enabled: Optional[bool] = None,
723+
bearer_token_env_var: Optional[str] = None,
724+
env_header: Optional[list] = None,
719725
no_backup: bool = False,
720726
dry_run: bool = False,
721727
auto_approve: bool = False,
@@ -837,6 +843,34 @@ def handle_mcp_configure(
837843
if disable_tools is not None:
838844
omni_config_data["disabledTools"] = disable_tools
839845

846+
# Host-specific fields (Codex)
847+
env_vars = getattr(args, 'env_vars', None)
848+
startup_timeout = getattr(args, 'startup_timeout', None)
849+
tool_timeout = getattr(args, 'tool_timeout', None)
850+
enabled = getattr(args, 'enabled', None)
851+
bearer_token_env_var = getattr(args, 'bearer_token_env_var', None)
852+
env_header = getattr(args, 'env_header', None)
853+
854+
if env_vars is not None:
855+
omni_config_data["env_vars"] = env_vars
856+
if startup_timeout is not None:
857+
omni_config_data["startup_timeout_sec"] = startup_timeout
858+
if tool_timeout is not None:
859+
omni_config_data["tool_timeout_sec"] = tool_timeout
860+
if enabled is not None:
861+
omni_config_data["enabled"] = enabled
862+
if bearer_token_env_var is not None:
863+
omni_config_data["bearer_token_env_var"] = bearer_token_env_var
864+
if env_header is not None:
865+
# Parse KEY=ENV_VAR_NAME format into dict
866+
env_http_headers = {}
867+
for header_spec in env_header:
868+
if '=' in header_spec:
869+
key, env_var_name = header_spec.split('=', 1)
870+
env_http_headers[key] = env_var_name
871+
if env_http_headers:
872+
omni_config_data["env_http_headers"] = env_http_headers
873+
840874
# Partial update merge logic
841875
if is_update:
842876
# Merge with existing configuration
@@ -1653,6 +1687,38 @@ def main():
16531687
help="Tool names to disable (Kiro)"
16541688
)
16551689

1690+
# Codex-specific arguments
1691+
mcp_configure_parser.add_argument(
1692+
"--env-vars",
1693+
action="append",
1694+
help="Environment variable names to whitelist/forward (Codex)"
1695+
)
1696+
mcp_configure_parser.add_argument(
1697+
"--startup-timeout",
1698+
type=int,
1699+
help="Server startup timeout in seconds (Codex, default: 10)"
1700+
)
1701+
mcp_configure_parser.add_argument(
1702+
"--tool-timeout",
1703+
type=int,
1704+
help="Tool execution timeout in seconds (Codex, default: 60)"
1705+
)
1706+
mcp_configure_parser.add_argument(
1707+
"--enabled",
1708+
action="store_true",
1709+
help="Enable the MCP server (Codex)"
1710+
)
1711+
mcp_configure_parser.add_argument(
1712+
"--bearer-token-env-var",
1713+
type=str,
1714+
help="Name of environment variable containing bearer token for Authorization header (Codex)"
1715+
)
1716+
mcp_configure_parser.add_argument(
1717+
"--env-header",
1718+
action="append",
1719+
help="HTTP header from environment variable in KEY=ENV_VAR_NAME format (Codex)"
1720+
)
1721+
16561722
mcp_configure_parser.add_argument(
16571723
"--no-backup",
16581724
action="store_true",
@@ -2724,6 +2790,12 @@ def main():
27242790
getattr(args, "disabled", None),
27252791
getattr(args, "auto_approve_tools", None),
27262792
getattr(args, "disable_tools", None),
2793+
getattr(args, "env_vars", None),
2794+
getattr(args, "startup_timeout", None),
2795+
getattr(args, "tool_timeout", None),
2796+
getattr(args, "enabled", None),
2797+
getattr(args, "bearer_token_env_var", None),
2798+
getattr(args, "env_header", None),
27272799
args.no_backup,
27282800
args.dry_run,
27292801
args.auto_approve,

0 commit comments

Comments
 (0)