Skip to content

Flattened extension alias subcommands still drop option contracts after GH-550/GH-503 fix (empty --help, valid options rejected) #574

Closed

Description

@unbraind

Environment

  • pm CLI 2026.7.16 (global install), Linux
  • Extension: published pm-csv@2026.7.13 installed via pm install npm:pm-csv@latest

Summary

GH-503 / GH-550 (fixed in 2026.7.15 via pm-evav) restored option contracts on the nested extension command path, and unknown-option validation now works at the alias group level. But the flattened alias path (pm csv-export …) still loses the option contract of its subcommands entirely.

Repro

pm init --pm-path "$PWD/.agents/pm" --id-prefix vfy
pm install npm:pm-csv@latest --pm-path "$PWD/.agents/pm"

# Nested path: full contract, works
pm csv export --help          # shows --output/--delimiter/--status/... ✅
pm csv export --delimiter pipe  # works ✅

# Flattened alias: contract dropped
pm csv-export --help            # only generic "Extension-provided command group", no options
pm csv-export export --help     # ZERO option lines ❌
pm csv-export export --delimiter pipe
# → Error: Too many arguments for extension command 'csv-export export': pipe.
#   Usage: pm csv-export export [file] ❌ (valid option rejected as positional)

Expected

pm csv-export export should carry the same option contract as pm csv export: identical --help output and identical option acceptance. If the flattened alias is meant to be a 1:1 mirror, consider generating it from the same command definition object rather than re-declaring a bare passthrough.

Impact for agents

Agents that discover commands via pm --help see the flattened alias, then get hard failures for options that the extension legitimately supports — they must know to fall back to the nested spelling. This costs retries/tokens and breaks scripted flows.

Related: #503, #550, #547 (2026.7.15 fix items pm-evav / pm-f38n).

Activity

  1. coderabbitai commented on Jul 16, 2026

    @coderabbitai
    ⚠️ Possible Duplicate Issue(s)
    🔗 Related PRs

    #51 - Polish CLI ergonomics, delete safety, and templates dedup [closed]
    #418 - Refactor residual CodeFactor complexity hotspots [merged]
    #475 - Improve package install and annotation agent UX [merged]
    #499 - Harden SDK schema-driven input fidelity and package preflight [merged]
    #511 - Preserve extension command contracts and recovery fidelity [merged]


    📝 Issue Planner

    Check the box below or use the @coderabbitai plan command to generate an implementation plan and prompts that you can use with your favorite coding assistant.

    • Create Plan

    🧪 Issue enrichment is currently in open beta.

    You can configure auto-planning by selecting labels in the issue_enrichment configuration.

    To disable automatic issue enrichment, add the following to your .coderabbit.yaml:

    issue_enrichment:
      auto_enrich:
        enabled: false

    💬 Have feedback or questions? Drop into our discord!

  2. unbraind commented on Jul 17, 2026

    @unbraind
    OwnerAuthor

    pm tracker item: pm-7ufz

  3. added a commit that references this issue on Jul 17, 2026
  4. unbraind commented on Jul 18, 2026

    @unbraind
    OwnerAuthor

    Re-verified under 2026.7.18: still reproduces. pm csv-export export --help renders only -h, --help (action contract csv-export-export metadata is shown, but no option contracts), while canonical pm csv export --help lists --output/--delimiter/--status/--type/--columns. Valid options are still rejected on the alias path (Error: Unknown option --delimiter).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions