Add permission denied callback and tag support