Justin Muturi demands action against UDA’s Hassan Omar over divisive Mt Kenya remarks
Justin Muturi demands action against UDA’s Hassan Omar over divisive Mt Kenya remarks
Read this story aloud
Listen to the clean text version of this article
Ready
3 min listen
Audio reading is not supported on this browser.
Muturi has accused UDA Secretary General Hassan Omar of making inflammatory remarks targeting the Mt Kenya region, warning President William Ruto to take decisive action to curb rising ethnic tensions ahead of the 2027 elections
Former Attorney General Justin Muturi has joined growing criticism against UDA Secretary-General Hassan Omar over alleged divisive remarks, calling on President William Ruto to take decisive action against leaders promoting narratives that threaten national cohesion.
Speaking after a Sunday church service and public engagement in Gacharage, Murang’a County, Muturi condemned Omar’s remarks about the Mt Kenya region, terming them inflammatory and dangerous.
“I stated firmly that the Kikuyu community are not tenants in Kenya. They are citizens of this Republic by birth, by right and by sacrifice,” Muturi said.
More To Read
- Cabinet clears financing for Modogashe-Samatar and Rhamu-Mandera roads to speed up construction
- 𝐄𝐚𝐬𝐭𝐥𝐞𝐢𝐠𝐡 𝐕𝐨𝐢𝐜𝐞 𝐚𝐭 𝐍𝐢𝐧𝐞 – Gatundu family demands justice after woman found dead
- Court rules Ruto’s Cabinet is unconstitutional, orders gender-balanced appointments within 120 days
- Teachers urge Ruto to confirm Evaleen Mitei as TSC CEO, citing reforms achieved during her tenure
- Activists demand accountability over alleged police brutality and enforced disappearances
- Court petition challenges government’s constitutional authority to sell Safaricom shares
He warned that reckless ethnic rhetoric risked reviving tensions similar to those witnessed during the 2007–2008 Kenyan crisis.
“The remarks made by UDA Secretary-General Hassan Omar were unfortunate, inflammatory and deeply disturbing. An apology alone cannot erase words that have the potential to divide Kenyans along ethnic lines,” he said.
Muturi also challenged Ruto to act against leaders accused of promoting tribal politics.
Latest Stories
- Ethiopia coffee exports hit record Sh388 billion on rising global demand
- Messi makes history as Argentina survive Cape Verde’s unforgettable World Cup fight
- Renewable energy boom cuts global fossil fuel bill by Sh62 trillion in 2025
- Judiciary to publish individual performance reports for judges in transparency push
“I call upon President William Ruto, if indeed he stands against tribalism, to take decisive action against leaders who promote dangerous narratives that threaten national cohesion. Silence or inaction only emboldens such behaviour,” said Muturi.
The criticism follows recent remarks by Omar in which he appeared to fault the Mt Kenya region for turning against Ruto despite backing him in the 2022 elections.
“When Daniel Arap Moi was in power, you called him a passing cloud. When William Ruto took over, you started saying one term. Just like Moi was not a passing cloud, neither will Ruto serve for only one term,” Omar said.
Omar also accused some leaders from the region of arrogance and sabotaging the country, remarks that have since triggered sharp political backlash.
Kalonzo Musyoka condemned the statements, saying the UDA Secretary-General had no authority to issue remarks profiling any community in Kenya.
“This calculated incitement must be condemned and halted immediately. Kenya has walked the painful road of post-election violence in 2007, and we, as a nation, cannot and must not be allowed to retrace those dark steps,” Kalonzo said.
“Let it be clearly understood: should this incitement persist, the matter will be escalated to the International Criminal Court (ICC).”
Mutahi Kahiga also weighed in on the controversy, calling for Omar’s resignation as UDA Secretary General over what he termed divisive remarks.
The growing criticism has heightened political tensions within and outside UDA, with leaders warning against ethnic rhetoric ahead of Kenya’s 2027 General Election.
Other Topics To Read
Top Stories Today
- Judiciary to publish individual performance reports for judges in transparency push
- Ethiopia coffee exports hit record Sh388 billion on rising global demand
- Messi makes history as Argentina survive Cape Verde’s unforgettable World Cup fight
- Renewable energy boom cuts global fossil fuel bill by Sh62 trillion in 2025
- Benchmark food prices down for second consecutive month in June
- UNHCR warns escalating Lake Chad violence driving sharp rise in displacement
`;
}
return “;
}
function commentActionsMarkup(comment, canComment) {
const likeLabel = comment.liked_by_me ? ‘Liked’ : ‘Like’;
const likeCount = Number(comment.like_count || 0) > 0
? “
: ”;
const likeButton = canComment && comment.status === ‘approved’
? “
: “;
const replyButton = canComment && comment.status === ‘approved’
? “
: ”;
return `
`;
}
function commentMarkup(comment, canComment, isReply = false) {
const pendingBadge = comment.status && comment.status !== ‘approved’
? “
: ”;
const edited = comment.is_edited
? “
: ”;
const repliesHtml = Array.isArray(comment.replies) && comment.replies.length
? `
`
: “;
return `
`;
}
function replyFormMarkup(commentId) {
return `
`;
}
function setNotice(widget, message, type = ‘info’) {
const notice = widget.querySelector(‘[data-role=”notice”]’);
if (!notice) return;
if (!message) {
notice.hidden = true;
notice.textContent = ”;
notice.classList.remove(‘is-error’);
return;
}
notice.hidden = false;
notice.textContent = message;
notice.classList.toggle(‘is-error’, type === ‘error’);
}
function setCount(widget, total) {
const count = widget.querySelector(‘[data-role=”count”]’);
if (!count) return;
const num = Number(total || 0);
count.textContent = num === 1 ? ‘1 comment’ : `${num} comments`;
}
function openReplyBox(widget, commentId) {
widget.querySelectorAll(‘[data-role=”reply-box”]’).forEach(box => {
box.hidden = true;
box.innerHTML = ”;
});
const targetItem = widget.querySelector(`.ev-comments__item[data-comment-id=”${commentId}”]`);
if (!targetItem) return;
const replyBox = targetItem.querySelector(‘[data-role=”reply-box”]’);
if (!replyBox) return;
replyBox.hidden = false;
replyBox.innerHTML = replyFormMarkup(commentId);
const textarea = replyBox.querySelector(‘textarea’);
if (textarea) textarea.focus();
}
function closeReplyBox(container) {
if (!container) return;
container.hidden = true;
container.innerHTML = ”;
}
async function initCommentsWidget(widget) {
const state = {
articleId: Number(widget.dataset.articleId),
loadUrl: widget.dataset.loadUrl,
storeUrl: widget.dataset.storeUrl,
commentsBaseUrl: widget.dataset.commentsBaseUrl,
canComment: widget.dataset.canComment === ‘1’,
page: 1,
perPage: 10,
sort: ‘newest’,
total: 0,
hasMore: false,
busy: false
};
const list = widget.querySelector(‘[data-role=”list”]’);
const loading = widget.querySelector(‘[data-role=”loading”]’);
const empty = widget.querySelector(‘[data-role=”empty”]’);
const loadMoreBtn = widget.querySelector(‘[data-role=”load-more”]’);
const sortSelect = widget.querySelector(‘[data-role=”sort”]’);
const composerForm = widget.querySelector(‘[data-role=”composer-form”]’);
async function loadComments(reset = true) {
if (state.busy) return;
state.busy = true;
setNotice(widget, ”);
loading.hidden = false;
if (reset) {
state.page = 1;
list.innerHTML = ”;
empty.hidden = true;
}
try {
const url = new URL(state.loadUrl, window.location.origin);
url.searchParams.set(‘page’, state.page);
url.searchParams.set(‘per_page’, state.perPage);
url.searchParams.set(‘sort’, state.sort);
const response = await requestJson(url.toString(), {
method: ‘GET’,
headers: {
‘Accept’: ‘application/json’,
‘X-Requested-With’: ‘XMLHttpRequest’
}
});
const items = Array.isArray(response.data) ? response.data : [];
const meta = response.meta || {};
state.total = Number(meta.total || 0);
state.hasMore = !!meta.has_more;
setCount(widget, state.total);
if (reset) {
list.innerHTML = ”;
}
if (!items.length && reset) {
empty.hidden = false;
} else {
empty.hidden = true;
list.insertAdjacentHTML(
‘beforeend’,
items.map(item => commentMarkup(item, state.canComment, false)).join(”)
);
}
loadMoreBtn.hidden = !state.hasMore;
} catch (error) {
if (!list.children.length) {
empty.hidden = false;
empty.textContent = ‘Unable to load comments right now.’;
}
setNotice(widget, error.message || ‘Unable to load comments.’, ‘error’);
} finally {
loading.hidden = true;
state.busy = false;
}
}
async function submitTopLevelComment(form) {
const textarea = form.querySelector(‘textarea[name=”content”]’);
const button = form.querySelector(‘[data-role=”submit-comment”]’);
if (!textarea) return;
const content = textarea.value.trim();
if (!content) return;
const originalText = button ? button.textContent : ”;
try {
if (button) {
button.disabled = true;
button.textContent = ‘Posting…’;
}
const response = await requestJson(state.storeUrl, {
method: ‘POST’,
headers: buildJsonHeaders(),
body: JSON.stringify({
article_id: state.articleId,
content: content,
source_url: window.location.href
})
});
textarea.value = ”;
if (response?.data) {
list.insertAdjacentHTML(
‘afterbegin’,
commentMarkup(response.data, state.canComment, false)
);
empty.hidden = true;
if ((response.data.status || ”) === ‘approved’) {
state.total += 1;
setCount(widget, state.total);
}
}
setNotice(widget, response.message || ‘Comment posted successfully.’);
} catch (error) {
setNotice(widget, error.message || ‘Unable to post comment.’, ‘error’);
} finally {
if (button) {
button.disabled = false;
button.textContent = originalText || ‘Post comment’;
}
}
}
async function submitReply(form) {
const commentId = Number(form.dataset.commentId || 0);
const textarea = form.querySelector(‘textarea[name=”content”]’);
const button = form.querySelector(‘.ev-comments__reply-submit’);
if (!commentId || !textarea) return;
const content = textarea.value.trim();
if (!content) return;
const originalText = button ? button.textContent : ”;
try {
if (button) {
button.disabled = true;
button.textContent = ‘Posting…’;
}
const response = await requestJson(`${state.commentsBaseUrl}/${commentId}/reply`, {
method: ‘POST’,
headers: buildJsonHeaders(),
body: JSON.stringify({
article_id: state.articleId,
content: content,
source_url: window.location.href
})
});
if (response?.data) {
const parentItem = widget.querySelector(`.ev-comments__item[data-comment-id=”${commentId}”]`);
if (parentItem) {
const repliesWrap = parentItem.querySelector(‘.ev-comments__replies’);
if (repliesWrap) {
repliesWrap.insertAdjacentHTML(
‘beforeend’,
commentMarkup(response.data, state.canComment, true)
);
}
}
}
closeReplyBox(form.closest(‘[data-role=”reply-box”]’));
setNotice(widget, response.message || ‘Reply posted successfully.’);
} catch (error) {
setNotice(widget, error.message || ‘Unable to post reply.’, ‘error’);
} finally {
if (button) {
button.disabled = false;
button.textContent = originalText || ‘Post reply’;
}
}
}
async function toggleLike(button) {
const commentId = Number(button.dataset.commentId || 0);
if (!commentId) return;
const originalHtml = button.innerHTML;
try {
button.disabled = true;
button.innerHTML = ‘Working…’;
const response = await requestJson(`${state.commentsBaseUrl}/${commentId}/like`, {
method: ‘POST’,
headers: buildJsonHeaders(),
body: JSON.stringify({})
});
const liked = !!response?.data?.liked;
const likeCount = Number(response?.data?.like_count || 0);
button.classList.toggle(‘is-liked’, liked);
button.innerHTML = `${liked ? ‘Liked’ : ‘Like’} ${likeCount > 0 ? “ : ”}`;
} catch (error) {
button.innerHTML = originalHtml;
setNotice(widget, error.message || ‘Unable to update like.’, ‘error’);
} finally {
button.disabled = false;
}
}
if (composerForm) {
composerForm.addEventListener(‘submit’, function (e) {
e.preventDefault();
submitTopLevelComment(composerForm);
});
}
if (sortSelect) {
sortSelect.addEventListener(‘change’, function () {
state.sort = this.value || ‘newest’;
loadComments(true);
});
}
if (loadMoreBtn) {
loadMoreBtn.addEventListener(‘click’, function () {
if (state.busy || !state.hasMore) return;
state.page += 1;
loadComments(false);
});
}
widget.addEventListener(‘click’, function (e) {
const likeBtn = e.target.closest(‘[data-action=”toggle-like”]’);
if (likeBtn) {
e.preventDefault();
toggleLike(likeBtn);
return;
}
const replyBtn = e.target.closest(‘[data-action=”toggle-reply”]’);
if (replyBtn) {
e.preventDefault();
openReplyBox(widget, Number(replyBtn.dataset.commentId || 0));
return;
}
const cancelReplyBtn = e.target.closest(‘[data-action=”cancel-reply”]’);
if (cancelReplyBtn) {
e.preventDefault();
closeReplyBox(cancelReplyBtn.closest(‘[data-role=”reply-box”]’));
}
});
widget.addEventListener(‘submit’, function (e) {
const replyForm = e.target.closest(‘.ev-comments__reply-form’);
if (replyForm) {
e.preventDefault();
submitReply(replyForm);
}
});
loadComments(true);
}
document.addEventListener(‘DOMContentLoaded’, function () {
document.querySelectorAll(‘.ev-comments’).forEach(initCommentsWidget);
});
})();
Trending
Ethiopia coffee exports hit record Sh388 billion on rising global demandRegional
|Bashir Mbuthia
|26 minutes ago
National Youth Council elections postponed indefinitely over compliance concernsNews
|Rachael Mutabasi
|19 hours ago
Messi makes history as Argentina survive Cape Verde’s unforgettable World Cup fightNews
|Erick Kariuki
|45 minutes ago
Kisumu unveils six-point plan to curb goonsInfographics
|Charity Pancras
|1 day ago
Renewable energy boom cuts global fossil fuel bill by Sh62 trillion in 2025Business
|Alfred Onyango
|1 hour ago
Court freezes auction as judge weighs whether WhatsApp grey ticks prove legal serviceNews
|Carolyne Kubwa
|1 day ago
How the cocoa price crash is crushing West African farmersAfrica
|DW News
|1 day ago
WhatsApp usernames raise impersonation concerns days after rolloutNews
|Margaret Wanjiru
|1 day ago
Police probe alleged gunfire after political clash disrupts Likoni public eventCoast
|Farhiya Hussein
|1 day ago
Kenya Association of Music Producers suspended for three months over governance, royalty misuseNews
|Lucy Mumbi
|1 day ago
