Skip to content

fix: Handle unknown flags or sub commands before starting worker#744

Closed
yofabr wants to merge 2 commits intosipeed:mainfrom
yofabr:unknown-flag-handler
Closed

fix: Handle unknown flags or sub commands before starting worker#744
yofabr wants to merge 2 commits intosipeed:mainfrom
yofabr:unknown-flag-handler

Conversation

@yofabr
Copy link
Copy Markdown
Contributor

@yofabr yofabr commented Feb 24, 2026

Summary

This PR adds proper detection and handling for unknown flags and subcommands in the CLI, improving user experience by providing clear error messages instead of silently ignoring invalid arguments.

#671 To properly handle unknown commands instead of starting gateway

Changes

1. Unknown Flag Detection

Added default case to flag parsing switches in the following commands:

  • cmd_agent.go: Added default case to detect unknown flags like --unknown-flag
  • cmd_gateway.go: Converted if/else flag parsing to switch statement with default case
  • cmd_cron.go: Added default case in cronAddCmd() for unknown flags
  • cmd_auth.go: Added default cases in authLoginCmd() and authLogoutCmd() for unknown flags

Before: picoclaw agent --unknown-flag would silently ignore the flag
After: picoclaw agent --unknown-flag outputs "Unknown flag: --unknown-flag" and exits with code 1

2. Flag vs Subcommand Detection

Added checks to distinguish between flags (e.g., --debug) and subcommands (e.g., list, add):

  • main.go (skills command): Detects when a flag is passed instead of a subcommand
  • cmd_cron.go: Detects when a flag is passed instead of a cron subcommand
  • cmd_auth.go: Detects when a flag is passed instead of an auth subcommand

Before: picoclaw cron --debug outputs "Unknown cron command: --debug"
After: picoclaw cron --debug outputs "Error: --debug is a flag, not a subcommand"

3. Added Import

  • Added "strings" import to main.go, cmd_cron.go, and cmd_auth.go for prefix checking

Behavior Summary

Command Input Before After
picoclaw agent --foo Unknown flag Silently ignored "Unknown flag: --foo"
picoclaw gateway --foo Unknown flag Silently ignored "Unknown flag: --foo"
picoclaw cron add --foo Unknown flag Silently ignored "Unknown flag: --foo"
picoclaw auth login --foo Unknown flag Silently ignored "Unknown flag: --foo"
picoclaw cron --debug Flag instead of subcommand "Unknown cron command: --debug" "Error: --debug is a flag, not a subcommand"
picoclaw auth -v Flag instead of subcommand "Unknown auth command: -v" "Error: -v is a flag, not a subcommand"
picoclaw skills --debug Flag instead of subcommand "Unknown skills command: --debug" "Error: --debug is a flag, not a subcommand"

Testing

All changes have been tested manually:

# Unknown flags
picoclaw agent --unknown-flag  # "Unknown flag: --unknown-flag"
picoclaw gateway --fake-flag  # "Unknown flag: --fake-flag"
picoclaw cron add --name test --message hi --fake-flag  # "Unknown flag: --fake-flag"

# Flags passed as subcommands
picoclaw cron -sf    # "Error: -sf is a flag, not a subcommand"
picoclaw auth -v     # "Error: -v is a flag, not a subcommand"
picoclaw skills -x   # "Error: -x is a flag, not a subcommand"

# Valid usage still works
picoclaw agent --debug --message "hello"  # Works correctly

Files Modified

  • cmd/picoclaw/main.go - Added strings import, flag detection for skills
  • cmd/picoclaw/cmd_agent.go - Added default case for unknown flags
  • cmd/picoclaw/cmd_gateway.go - Converted to switch with default case
  • cmd/picoclaw/cmd_cron.go - Added strings import, flag detection, default case
  • cmd/picoclaw/cmd_auth.go - Added flag detection, default cases

@yofabr yofabr changed the title Unknown flag handler fix: Handle unknown flags or sub commands before starting worker Feb 24, 2026
@yofabr
Copy link
Copy Markdown
Contributor Author

yofabr commented Feb 25, 2026

@xiaket
@yinwm
@ixowalle

@xiaket
Copy link
Copy Markdown
Collaborator

xiaket commented Feb 25, 2026

With #429 merged, do you think we still suffer from this issue?

@yofabr
Copy link
Copy Markdown
Contributor Author

yofabr commented Feb 25, 2026

With #429 merged, do you think we still suffer from this issue?

If there is cobra cli merged then this PR can be closed.

@xiaket xiaket closed this Feb 25, 2026
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.

2 participants