I've got a function defined in my fish shell:

function cl --wraps=cd
    cd $argv && ls -l --color=auto

According to man function, the --wraps option "causes the function to inherit completions from the given wrapped command."

However, when I type cl and start to tab-complete, I'm shown options which include non-directories (like .c files). However, when I type cd and then tab-complete, I'm only shown directories.

Did I define my function incorrectly?

  • I wasn't able to reproduce this. If you run functions cl does it show the wraps argument? What does fish --version show? Oct 30, 2021 at 3:27
  • Yeah, it shows the --wraps=cd. The version of fish is 3.1.2. Oct 30, 2021 at 21:20

1 Answer 1


You're hitting this issue which was fixed in fish shell version 3.3.0. Upgrade to a newer fish and it should fixed.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.