Here's some code that will do what you ask about. It creates
a new undirected graph that has edges only when edges for
both directions exist in the original directed graph. It then
finds cliques and reports them. Since the cliques are just
lists of nodes, they work for the original graph too.
Dan
def find_directed_cliques(G):
"""
Convert G to an undirected graph with edges
present only if both directions are present in G.
Then find and return cliques.
"""
H=nx.Graph()
for u,v in G.edges():
if u in G[v]:
H.add_edge(u,v)
return nx.find_cliques(H)