91³Ô¹ÏÍø

Watch CBS News

Disturbing details of mother's death in Roseland revealed in court; son Kevan Works held in custody

A man accused of killing his elderly mother will remain in custody awaiting trial as new details of the crime were revealed in court Friday morning.

Kevan Works, 66, is charged with one count of first-degree murder and one count of concealing the death of a person. He was arrested and charged Tuesday after the body of Daniest Graves, 88, was found in her home in the 10700-block of S. Lafayette.

In his Friday detention hearing, prosecutors said Graves' body was found in a room in the basement of the home that had a bookcase blocking the door, rolled up in a rug.

Prosecutors said Graves went shopping with her sister the afternoon of March 26, which was the last time she was seen alive. Her sister did not get the usual prayer text from Gaves the next day and wasn't able to get in touch with her by phone all day. Finally, prosecutors said, on the 28th she drove to Graves' house where Works allegedly physically prevented her from going inside. When she demanded to know where she was, he said he had last seen her the day before.

Graves' sister called Chicago police for a wellbeing check, and found Works at the home, who told them he hadn't seen his mother since the 27th when she went to work, prosecutors said. Prosecutors also said Works told police he had already reported her missing, but didn't have the report number. Police eventually had to force their way into her bedroom, where they found her phone but no sign of her, according to court documents. A missing persons investigation was then launched.

According to prosecutors, Works had lived with Graves since Thanksgiving of 2025, had been homeless on and off for the last decade, and is medicated for bipolar disorder and anxiety.

After a week of investigation but not generating any leads on Graves' location, CPD returned to the home on April 7 with a search warrant, court documents show. During the search, prosecutors officers found the blocked door in the basement, moved it, entered the room and a cadaver dog alerted for human remains. That's when Graves' body was found.

Prosecutors said Graves' body was partially wrapped in black garbage bags secured with duct tape, then rolled up in a rug alongside blankets, bags, pieces of mails, various items of clothing and trash. She was pronounced dead at the scene. An autopsy found she had 17 blunt force injuries to her head and body, and appeared to have defensive wounds and knife wounds on her thumb and forearm.

Prosecutors said police found a folding blade knife, brass knuckles, a hammer and a bowing knife in the home, as well as a large bottle of bleach. In the garage, prosectors said police found Graves' purse and wallet in a garbage can.

Prosecutors also said Ring camera from a neighbor' s home showed the only person coming in and out of the home between March 26 and April 7 was Works.

Works was ordered detained until his trial. He is next due in court on April 29. 

View CBS News In
CBS News App Open
Chrome Safari Continue
const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = '/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=296763317a51cab90faa73f1bb146d5c'; doc.head.appendChild(link); doc.body.innerHTML = CONSENT_MESSAGE; } else { el.insertAdjacentHTML('afterend', CONSENT_MESSAGE); } }); } function hidePrivacyMessage() { // Remove from the main document document.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); // Remove from inside any iframes document.querySelectorAll('iframe').forEach(iframe => { const doc = iframe.contentDocument || iframe.contentWindow.document; doc.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); }); } function activateGatedScripts() { // Handle both new format (cmp-gated-script) and old OneTrust/Ketch format (optanon-category-4) const gatedScripts = Array.from(document.querySelectorAll('script.cmp-gated-script, script.optanon-category-4')); // Activate scripts sequentially with a small delay to avoid timing issues let delay = 0; gatedScripts.forEach(function(placeholder, index) { setTimeout(function() { // Skip if already processed if (placeholder.hasAttribute('data-cmp-processed')) { return; } placeholder.setAttribute('data-cmp-processed', 'true'); const newScript = document.createElement('script'); newScript.type = 'text/javascript'; // Try new format first (data-cmp-src), then fall back to old format (data-src) const src = placeholder.getAttribute('data-cmp-src') || placeholder.getAttribute('data-src'); if (src) { newScript.src = src; } else if (placeholder.textContent) { // Inline script - just copy the content newScript.textContent = placeholder.textContent; } // Handle new format attributes (data-cmp-attrs) - for both inline and external scripts const attrs = placeholder.getAttribute('data-cmp-attrs'); if (attrs) { const tempDiv = document.createElement('div'); tempDiv.innerHTML = '
<\/div>'; const tempAttrs = tempDiv.firstChild.attributes; for (let i = 0; i < tempAttrs.length; i++) { // For external scripts, allow defer/async. For inline scripts, skip them (not valid) if (src || (tempAttrs[i].name !== 'async' && tempAttrs[i].name !== 'defer')) { newScript.setAttribute(tempAttrs[i].name, tempAttrs[i].value); } } } // Copy other attributes from old OneTrust format for (let i = 0; i < placeholder.attributes.length; i++) { const attr = placeholder.attributes[i]; // Skip attributes we've already handled or don't want to copy if (!['class', 'data-src', 'data-type', 'data-cmp-src', 'data-cmp-attrs', 'data-cmp-processed', 'type', 'async', 'defer', 'src'].includes(attr.name)) { newScript.setAttribute(attr.name, attr.value); } } placeholder.parentNode.replaceChild(newScript, placeholder); // If external script, manually trigger window.onload handlers after it loads // This handles widgets that use window.onload for initialization if (src) { newScript.addEventListener('load', function() { // If page already loaded and script set a new onload handler, trigger it if (document.readyState === 'complete' && window.onload) { const originalOnload = window.onload; window.onload = null; // Clear temporarily to prevent loops originalOnload(); // Execute the handler } }); } }, delay); delay += 500; // 500ms delay between each script to allow full loading }); } cbsoptanon.onScriptsReady(function(cmp) { cmp.ot.targetingAllowed(function(allowed) { if (!allowed) { showPrivacyMessage(); } else { activateGatedScripts(); } }); cmp.ot.awaitInitialConsent(function(consent_model) { cmp.ot.addOnConsentChangedHandler(function() { cmp.ot.targetingAllowed(function(allowed) { if (allowed) { hidePrivacyMessage(); activateGatedScripts(); } else { showPrivacyMessage(); } }); }); }); });