I have a binary (call it foo) with two, mutually exclusive, optional flags (that must come first) and a required arg. The problem I'm having is that when omitting both flags and using just the arg the completion tries to add one of the flags after it. Reading the docs lead me to the -A flag, however it doesn't seem to be preventing the flag completion despite being after the first arg. I'm hoping I've just overlooked something but for the life of me I can't see it. Command structure: foo [--name|--software] Current completion code: #compdef foo _nodes() { compadd $(get_node_list) } local curcontext="$curcontext" state state_descr line typeset -A opt_args local rc=1 _arguments -A '-*' \ '(--name --software)'{--name,--software} \ '1: :_nodes' \ && rc=0 return rc Examples: foo #=> GOOD: nodelist foo - #=> GOOD: --name --software foo --name #=> GOOD: nodelist foo --name - #=> GOOD: nothing foo --software #=> GOOD: nodelist foo --software - #=> GOOD: nothing foo node #=> BAD: --name --software, expect nothing foo node - #=> BAD: --name --software, expect nothing Any assistance to solve this issue would be massively appreciated! Many thanks, Mal