I believe the backward pass for torch.sign() returns all gradients simply as zeros and not the output expected from a straight through estimator.

Ok I see. But first, the correct straight through estimator for the derivative of sign is not clamping grad_output between -1 and 1. You want grad_output being 0 where the input is smaller than -1 or bigger than 1. So, something like this:
def backward(self, grad_output):
    input = self.saved_tensors
    grad_output[input>1]=0
    grad_output[input<-1]=0
    return grad_output

Then, after you define your function extanding Function, you can call it into the forward your module just like in the example above