Here is a complete code example that re-produces the error. I was able to do this in previous versions of Bokeh but after upgrading this code no longer lets me add a div to the GridBox.
from bokeh.models import Panel, Tabs
from bokeh.io import output_file, show
from bokeh.plotting import figure
from bokeh.io import curdoc
from bokeh.models.widgets import Div
from bokeh.layouts import gridplot
p1 = figure(plot_width=300, plot_height=300)
p1.circle([1, 2, 3, 4, 5], [6, 7, 2, 4, 5], size=20, color="navy", alpha=0.5)
p2 = figure(plot_width=300, plot_height=300)
p2.circle([1, 2, 3, 4, 5], [6, 7, 2, 4, 5], size=20, color="navy", alpha=0.5)
p3 = figure(plot_width=300, plot_height=300)
p3.circle([1, 2, 3, 4, 5], [6, 7, 2, 4, 5], size=20, color="navy", alpha=0.5)
p4 = figure(plot_width=300, plot_height=300)
p4.circle([1, 2, 3, 4, 5], [6, 7, 2, 4, 5], size=20, color="navy", alpha=0.5)
g1 = gridplot([p1, p2, p3, p4], ncols=2, plot_width=800, plot_height=600)
tab1 = Panel(child=g1, title="circle")
tabs = Tabs(tabs=[ tab1 ])
doc = curdoc()
doc.add_root(tabs)
my_div = Div(text="Please wait...")
doc._roots[0].tabs[0].child.children[1].children.append(my_div)
This is the error message I got,
ValueError: expected an element of List(Either(Tuple(Instance(LayoutDOM), Int, Int), Tuple(Instance(LayoutDOM), Int, Int, Int, Int))), got seq with invalid items [Div(id='2515', ...)]