it breaks the flow, e.g.:
b=f1(a)
with no_grad():
  c=f2(b,p)
d=f3(c)

if p is a parameter, it disables its update, yes. but c->b flow is also disabled, and then b->a edge is never reached.
so, in this situation, you’d normally use c = f2(b, p.detach()) instead; no_grad() in forward() is more for auxiliary paths, not for segments in the middle.