Hi – torch.cat() does pass gradients, as you can verify with the following:
import torch

a = torch.ones(2, requires_grad=True)
b = torch.ones(3, requires_grad=True)
c = torch.cat((a, b))
output = c.sum()
output.backward()
print(a.grad) #tensor([1., 1.])
print(b.grad) #tensor([1., 1., 1.])

Could you be more specific about your problem?