diff --git a/include/obmc_console.hpp b/include/obmc_console.hpp
index 2dd3edb..fb363be 100644
--- a/include/obmc_console.hpp
+++ b/include/obmc_console.hpp
@@ -71,7 +71,7 @@
                 return;
             }
             self->doWrite();
-            });
+        });
     }
 
     static void afterSendEx(const std::weak_ptr<ConsoleHandler>& weak)
@@ -107,7 +107,7 @@
             std::string_view payload(outputBuffer.data(), bytesRead);
             self->conn.sendEx(crow::websocket::MessageType::Binary, payload,
                               std::bind_front(afterSendEx, weak_from_this()));
-            });
+        });
     }
 
     bool connect(int fd)
@@ -247,7 +247,7 @@
         [&conn](const boost::system::error_code& ec1,
                 const sdbusplus::message::unix_fd& unixfd) {
         connectConsoleSocket(conn, ec1, unixfd);
-        },
+    },
         consoleService, consoleObjPath, "xyz.openbmc_project.Console.Access",
         "Connect");
 }
@@ -299,7 +299,7 @@
         [&conn, consolePath](const boost::system::error_code& ec,
                              const ::dbus::utility::MapperGetObject& objInfo) {
         processConsoleObject(conn, consolePath, ec, objInfo);
-        });
+    });
 }
 
 inline void onMessage(crow::websocket::Connection& conn,
