DefManifold[M3, 3, IndexRange[{a, f}, {h, n}]]
DefMetric[-1, g[-a, -b], CD, FlatMetric -> True]
DefTensor[Ph[a, b], M3, Symmetric[{a, b}], PrintAs -> "\[CapitalPhi]"]
t1 = PD[-a][PD[a][Ph[d, -d]]]
t2 = SeparateMetric[][t1]
t3 = t2 // ToCanonical
~~~~~~~~~~~~~~~~~~~~~~~~~
I think the problem is that the canonicalizer wants to move indices
with the metric, but as you have a derivative that in general is not
compatible with the metric (PD), this will be dangerous.
You can tell the canonicalizer that it should not move any indices
with the metric by adding the following line:
SetOptions[ToCanonical, UseMetricOnVBundle -> None]
Another alternative is to use the covariant derivative CD instead of
the partial derivative PD. This is compatible with the metric.
I hope this solves your problem.
Regards
Thomas