So testing the code and changing the hook to:
    def __call__(self, grad):
        try:
            grad_clone = grad.clone().detach()

            if self.is_bias:
                grad_clone[self.currently_active] = 0

            else:
                grad_clone[self.currently_active, :] = 0
                grad_clone[:, self.previously_active] = 0

            return grad_clone
        except Exception as e:
            print("bad hook")
            print(e)

Then the issue comes from your hook raising errors.
I am not sure why these errors are not properly propagated but you can fix your issue by simply fixing the issues printed above.