agent: join/force-leave run async