I have four permissions in my permissions table in DB:
In my blade template I check for those permissions via directives like so:
@permission('programs')
dd('code where permission HAS NOT a dot in the name')
@endpermission
@permission('programs.store')
dd('code where permission HAS a dot in the name')
@endpermission
@permission('programs.update')
dd('code where permission HAS a dot in the name')
@endpermission
An authorized user has a role with all the above permissions attached to it, however, code with permission programs does not work, while others do.
Why? How can it be fixed?

Oh....Entrust cached my previous settings for the user, so all you need is update cache each time you change user permission :