Peel and finely dice the shallots and carrots (about ¼-inch pieces so they soften quickly). Dice the celery the same size for even cooking.
Rinse the wild rice in a fine-mesh sieve under cold water for 10–15 seconds to remove any dust (optional, but it can help the grains cook more evenly).
Avoid soaking mushrooms in water (they’ll absorb it and won’t brown well). Instead, wipe with a damp towel or quickly rinse and pat very dry. Slice into ¼-inch pieces so they sear rather than steam.
Heat 2 tablespoons olive oil in a 5–6 quart pot or Dutch oven over medium to medium-high heat. Add the mushrooms in an even layer (work in two batches if needed to avoid crowding).
Cook 5–7 minutes, stirring occasionally, until they release their moisture and the edges turn golden. Season with a small pinch of salt, transfer to a bowl, and set aside.
Lower the heat to medium and add the remaining 2 tablespoons olive oil. Stir in the diced shallots, celery, and carrots with a small pinch of salt.
Cook 3–5 minutes, stirring occasionally, until the shallots look translucent and the celery begins to soften. Use a wooden spoon to scrape up any browned bits from the bottom of the pot - they add flavor.
Sprinkle the flour over the vegetables and stir continuously for 1–2 minutes. The mixture will look pasty and then slightly glossy; it should smell lightly toasty, not raw. Stir in the thyme, sage, and black pepper and cook 30 seconds to bloom the herbs.
Stir in the wild rice to coat it in the roux. Slowly pour in the vegetable broth in 2–3 additions, stirring well after each to prevent lumps and to fully deglaze the pot. Scrape the bottom and corners so nothing sticks.
Add the sautéed mushrooms (and any juices in the bowl) back to the pot. Bring to a gentle boil, then reduce to a steady simmer. Partially cover and cook 30–40 minutes, stirring every 8–10 minutes to keep the rice from settling.
Start checking at 30 minutes; the wild rice is done when some grains have split and all are pleasantly chewy-tender. If the liquid reduces too quickly, stir in ½ cup hot water or broth to maintain a soup-like consistency.
Turn off the heat. Stir in the oat milk until the soup looks silky and creamy. Avoid boiling after adding the oat milk to keep the texture smooth. Taste and adjust salt and pepper as needed (the amount of salt you need will depend on your broth).
Let the soup rest 5 minutes - it thickens slightly as the rice settles. Ladle into bowls and garnish with chopped chives. Serve warm. Enjoy!