Cryptomatte doesnt output nice clean edges
I assume your screenshot shows what you would see in the image editor if you have rendered cryptomatte passes, and view them directly. In that case, they look absolutely horrible:



However, that's not how they are supposed to be used. The mattes have to be extracted from the created channels first using the Cryptomatte node. You can find it under Add -> Mattes -> Cryptomatte in the Compositor. Connect the nodes like in the screenshot below to extract the object mattes:



If you need to extract material mattes, connect the three material Cryptomatte outputs to the Cryptomatte node instead.

Next comes the tricky part: The Cryptomatte render passes contain all mattes at once using an internal ID. That ID needs to be set in the node. Since these are not simple 1, 2, 3, etc numbers, you have to pick the correct ID using the color picker. That is also the reason why in the screenshot above I have used two Image Editors, one showing the Composite, the other the Viewer node. I can see both images, the Pick one through the Viewer, and the Image through the Composite node.

Now, use the color picker to grab the ID from the bottom image (the one that shows the Pick image):



If you check what's in the Matte socket output, you will see that the created Matte is perfectly anti-aliased:



Of course, this anti-aliasing quality is dependent on the scene samples. But the matte quality always matches the image quality.