diff --git a/src/graph/Node.cpp b/src/graph/Node.cpp
index da6d833f3aa933cd5e707814c279142de5bc4a23..e8625b5b66abfb3f65da37b4097f420a23fc5518 100644
--- a/src/graph/Node.cpp
+++ b/src/graph/Node.cpp
@@ -407,18 +407,18 @@ void Aidge::Node::resetConnections(bool includeLearnableParam) {
 ///////////////////////////////////////////////////////
 
 Aidge::NodePtr Aidge::Node::cloneSharedOperators() const {
-    return std::make_shared<Node>(mOperator, mAttrs);
+    return std::make_shared<Node>(mOperator, std::make_shared<DynamicAttribute>(*mAttrs));
 }
 
 Aidge::NodePtr Aidge::Node::cloneSharedProducers() const {
     std::shared_ptr<Operator> op =
             (mOperator->type() == Producer_Op::Type) ? mOperator : mOperator->clone();
 
-    return std::make_shared<Node>(op, mAttrs);
+    return std::make_shared<Node>(op, std::make_shared<DynamicAttribute>(*mAttrs));
 }
 
 Aidge::NodePtr Aidge::Node::clone() const {
-    return std::make_shared<Node>(mOperator->clone(), mAttrs);
+    return std::make_shared<Node>(mOperator->clone(), std::make_shared<DynamicAttribute>(*mAttrs));
 }
 
 std::set<Aidge::NodePtr> Aidge::Node::getNodeDelta(int delta, std::set<Aidge::NodePtr> nodeSee) {