diff --git a/agent/access.go b/agent/access.go
index 8c164b4a..4ea8fe4b 100644
--- a/agent/access.go
+++ b/agent/access.go
@@ -46,24 +46,37 @@ func (a *access) tail(data []byte) {
 	if line, err := a.readBuffer.ReadString('\n'); err == nil {
 		line = strings.Trim(line, "\n")
 		if !a.booted {
-			in := make(map[string]interface{})
-			if err := json.Unmarshal([]byte(line), &in); err == nil {
-				if v, found := in["frontend_token"]; found {
-					if str, ok := v.(string); ok {
-						a.frontendToken = str
+			if strings.HasPrefix(line, "{") {
+				in := make(map[string]interface{})
+				if err := json.Unmarshal([]byte(line), &in); err == nil {
+					if v, found := in["message"]; found {
+						if str, ok := v.(string); ok {
+							if str == "boot" {
+								if v, found := in["frontend_token"]; found {
+									if str, ok := v.(string); ok {
+										a.frontendToken = str
+									}
+								}
+								if v, found := in["bind_address"]; found {
+									if str, ok := v.(string); ok {
+										a.bindAddress = str
+									}
+								}
+								a.booted = true
+							}
+						} else {
+							a.bootErr = errors.New(line)
+						}
+					} else {
+						logrus.Warn(line)
 					}
+				} else {
+					a.bootErr = errors.New(line)
 				}
-				if v, found := in["bind_address"]; found {
-					if str, ok := v.(string); ok {
-						a.bindAddress = str
-					}
-				}
-				a.booted = true
+				close(a.bootComplete)
 			} else {
-				a.bootErr = errors.New(line)
+				logrus.Warn(line)
 			}
-			close(a.bootComplete)
-
 		} else {
 			if strings.HasPrefix(line, "{") {
 				in := make(map[string]interface{})