Due to the way that the _expand_new_virtuals function generates atoms referring to specific versions of virtuals, package.provided does not work for virtuals unless it refers to the specific version resolved by _expand_new_virtuals. This atoms generated by _expand_new_virtuals are visible in the verbose --depclean output. For example: $ emerge -pv --depclean virtual/shadow Calculating dependencies... done! virtual/shadow-0 pulled in by: @system requires virtual/shadow mail-mta/nullmailer-1.13-r5 requires =virtual/shadow-0, virtual/shadow net-misc/openssh-7.3_p1-r7 requires =virtual/shadow-0, virtual/shadow