'Zsh detects insecure completion-dependent directories

I get the following error messages when I open my terminal, Hyper:

[oh-my-zsh] Insecure completion-dependent directories detected:
drwxrwxr-x  7 dwaynethe2nd  admin  224 Apr 25 15:00 /usr/local/share/zsh
drwxrwxr-x  4 dwaynethe2nd  admin  128 Apr 25 14:53 /usr/local/share/zsh/site-functions


Solution 1:[1]

This is an issue with ZSH, your shell, not Hyper, your terminal. I actually had the same issue earlier today. There are some solutions in this issue on Github, and I will quote some of them here but I recommend you follow the link and read the comments there.

The first solution is to change the ownership of the problematic directories.

I will not recommend this without knowing more about your environment, but for most people this will fix the issue:

chmod 755 /usr/local/share/zsh
chmod 755 /usr/local/share/zsh/site-functions

The second solution is to set ZSH_DISABLE_COMPFIX=true (or "true" in quotes) in your .zshrc file, to tell ZSH to not check for insecure directories.

The third solution, and the solution that fixed the issue for me, is to initialise compinit with the -u flag. This will use all the directories found by compaudit without checking them for security issues. To do this, you will have to change your .zshrc file or wherever you are configuring autocomplete.

Solution 2:[2]

On my mac, what helped was running brew doctor

The program told me the exact commands to run!

Solution 3:[3]

Reinstalling brew solved this problem for me.

Uninstall brew:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"

Install brew:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Solution 4:[4]

Executing two commands solved my issue.

  1. sudo chown -R $(whoami) /usr/local/share/zsh /usr/local/share/zsh/site-functions
  2. chmod u+w /usr/local/share/zsh/usr/local/share/zsh/site-functions

Solution 5:[5]

For me, the site-functions were symlinked to Homebrew directories.

/usr/local/share/zsh/site-functions/_brew -> ../../../Homebrew/completions/zsh/_brew

So the only thing that would work is to issue the command against those directories directly.

sudo chown -R $USER /opt/homebrew/completions/zsh/_brew 

Or for cellars

sudo chown -R $USER /opt/homebrew/Cellar/ripgrep/13.0.0/share/zsh/site-functions/_rg

I'm not sure whether this will pop up again when running brew update.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2 azizbro
Solution 3 Tapas Pal
Solution 4 Dharman
Solution 5 What Would Be Cool