(XXX, derivsubst : true) # block([derivsubst : true], XXX)



  (%i1) (f : g, g : h, h : i, depends([f,g,h,i],x))$
  (%i2) substitute('diff(f,x)= g,'diff(f,x,2)), derivsubst : true;

  (%o2) 'diff(i,x,1)
  (%i3) block([derivsubst : true], substitute('diff(f,x)= g,'diff(f,x,2)));
  (%o3) 'diff(h,x,1)

I think the XXX,  derivsubst : true syntax is convenient, but it's not the same as block([derivsubst : true], XXX).
Maybe there is a workaround--set an optional variable in the implied ev.  But that kind of eliminates the convenience
of the XXX,  derivsubst : true.

--Barton