How do I get automatic data bounds for twin axes?

All the examples I can find of twin axes, including the docs, have the secondary axis use an explicit range.

How can I have a secondary axis automatically set its data bounds to fit snugly around the data?

I tried Range1d(), but that just uses the defaults on 0 and 1.
I tried Range1d(start=0, end=None) but that gave a type error on the None.

Range1d are explicitly not auto-ranging. They are just “dumb” manually set start/end ranges:

A fixed, closed range [start, end] in a continuous scalar dimension.

You want DataRange1d. You will need to configure the renderers property of the data range to specify and restrict which glyphs you want it to auto-range for.